When generating rotation by a simple multiplication, say frames A and a multiplication factor of B (for degrees), the total rotation at any frame is
rotation angle = A * B degrees
(could be using time secs, but it's the same math)
If B is constant, the total rotation increases linear with time (frames) ie at a constant speed.
Say you were at 50 frames (A) with multiplication factor (B) of 10 degrees, the total rotation is
A * B = 50 * 10 = 500 degrees
at F51
A * B = 51 * 10 = 510 deg
etc
But if at F50, you try to slow down the rotation speed by dropping B to 9 degrees (B keyframed 10 at F50 and 9 at F51), the total rotation at F51 is
A * B = 51 * 9 = 459 degrees
so the object has gone backwards ! (this is your glitch)
whereas my method of adding a smaller value in that frame, still goes forward.
If I was generating rotation by adding 10 degrees per frame, the rotation is
angle at F50 = 500 degrees
then I lower the speed to 9
angle at F51 = 509 degrees
angle at F52 = 518 degrees
> still going forward, but slower
Simplifying this using linear speed -
if an object is at 100m and after 1 sec it is at 105m, its speed is 5 m/s ie 5 is the change in the existing value in one second. When the object is at 200m, 1 sec later (if still going at the same speed) it will be at 205m. The speed is the change per unit of time - the distance increases by the same amount ie 5m in 1s.
With my 'addition method' of generating rotation speed, the time unit is 1F and I'm adding a set value every time unit - 1F or 1/30 sec. If I want to vary the speed by changing the amount added per frame, I'm adding to the existing rotation. If I add a smaller amount, the object goes a bit slower - not backwards. If I add the same amount every frame, it has constant speed, if I add a larger value every frame it goes faster. If I add zero - it stops.
TLDR version > speed is the rate of change per unit of time.
edit : see demo of linear speed by addition
https://www.dropbox.com/s/7znmbmo7c0zu0y7/demospeed.c4d?dl=1