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 ItemClock.java (MCP 9.31) lines 57-60 reads:
if (d0 < -0.5D)
{
++d0;
}
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;