This clock is spinning 200x faster than normal, to illustrate the points at which the clock gives an extra spin.

The broken behavior is that the clock's angle isn't kept in-bounds at all times. At noontime, when the sky angle rolls from 0.99 to 0, the clock's angle is often at 1.99 rather than 0.99 (having rolled silently from 0.99 on through 1.01 and so on), and so swings wildly.

This was solved by running key values through the positiveModulo function.

Where (MCP 9.31) lines 57-60 reads:
if (d0 < -0.5D)
Replace with:
d0 = (double)MathHelper.positiveModulo( (float)d0 + 0.5F, 1.0F ) - 0.5D;

Where line 64 reads:
this.rotation += this.rota;
Add this line after it:
this.rotation = MathHelper.positiveModulo( (float)this.rotation, 1.0F );

Where line 47 reads:
return MathHelper.positiveModulo((float)d0, 1.0F);
Replace with:
return (float)d0;

Broken Clock
SkyAngle:0.5595 ThisAngle:1.5486
Working Clock
SkyAngle:0.5595 ThisAngle:0.5487