Ok, so much for trying to do it without actually trying to see if it works…
After actually trying it, it is definitely more complicated than I thought. Since the rotation is tied to the Time value, it gets tricky to do what you want with the current method. It would be better to animate the slider to represent time. If you use Time, you will have to sample all previous frames for what the slider value was and add them all up. While it can be done, it is inefficient.
So, if you use the slider to represent time, the following does it:
t = effect("Slider Control")("Slider");
wholeSecond = Math.floor(t);
rotateDuration = 0.2;
anglePerSecond = 6; // 360 / 60
startAngle = wholeSecond * anglePerSecond;
linear(t, wholeSecond + 0.8, wholeSecond + 1, startAngle, startAngle + anglePerSecond)
Unfortunately, you’ll have to track the time usage yourself if done this way. For instance, if you wan to speed up between seconds 5 and 6, the keyframed slider values would be:
0 seconds: 0
5 seconds: 5
6 seconds: 9 (time advances 4 seconds within 1 second)
10 seconds: 13