For TimesoFar to ever be > Value2*2 then DaltaTimesofar has to be greater than Value2. But Value two is the wavelength, so you are taking sample too infrequently.
Nope, I'm taking a sample every frame. It's just that it doesn't get updated when it's not being displayed so every time it is reactivated, it's possible for TimeSoFar to be very high, which is why I coded it so that this doesn't cause a problem.
Yes, TimeSoFar is a float now, but wasn't originally. I obviously spotted that it either needed to be a float or I needed to cast to a float for the division and ended up doing both.
Still neither of those are the problem.