Why not have the a light/dark indicator that shows what you are currently in, then you the ability and it takes a 'snapshot' of that instance for the duration. Recasting would reset the duration and capture a new snapshot to change it.
This would mean you can no longer change without a recast, but it keeps the ability for the environment to affect the ability.
As long as the player knows and can control which buff they are getting, that would be ideal.
EDIT: For example, you could have a little sundial in the bottom right of the screen that switches between light and dark (could even use the same sundial effects for the weird morality compass thing). If it were light and the player casts Eclipse, it would lock them on the light buff for the full duration unless they recast it, which would take a new snapshot.
I think it would be fairly cool visually.