Oops. I was off by a couple orders of magnitude on the error. Try:
case 1200:
/* A factor of 1.1011011 gives about .25% error. */
if (time_adj < 0) {
time_adj -= (-time_adj >> 1);
time_adj -= (-time_adj >> 3) + (-time_adj >> 6);
} else {
time_adj += (time_adj >> 1);
time_adj += (time_adj >> 3) + (time_adj >> 6);
}
break;
B-)