diff -Naurd old/kernel/timer.c linux/kernel/timer.c --- old/kernel/timer.c 2003-07-18 17:27:01.000000000 -0400 +++ linux/kernel/timer.c 2003-07-18 17:32:19.000000000 -0400 @@ -606,6 +606,15 @@ else time_adj += (time_adj >> 2) + (time_adj >> 5); #endif +#if HZ == 1000 + /* Compensate for (HZ==1000) != (1 << SHIFT_HZ). + * Add 1.5625% and 0.78125% to get 1023.4375; => only 0.05% error (p. 14) + */ + if (time_adj < 0) + time_adj -= (-time_adj >> 6) + (-time_adj >> 7); + else + time_adj += (time_adj >> 6) + (time_adj >> 7); +#endif } /* in the NTP reference this is called "hardclock()" */