   millis_delta_t elapsed = now - W.next_second_millis;
 
   if (elapsed > 0) {
-    W.next_second_millis += 1000 + W.millis_adjust;
+    W.next_second_millis += 1000;
+    W.seconds_since_last_adjust += 1;
+
+    // apply millis_adjust every 1,000,000 milliseconds
+    if (W.seconds_since_last_adjust >= 1000) {
+      W.next_second_millis += W.millis_adjust;
+      W.seconds_since_last_adjust = 0;
+
+      if (W.color == COLOR_BLUE) W.color = COLOR_RED;
+      else W.color = COLOR_BLUE;
+    }
 
     uint8_t changes = 1;
 

void watch_init(millis_t now) {
  Watch.next_second_millis = now;
  Watch.needs_redraw = 1;
}

/**

  // watch_tick returns.
  uint8_t needs_redraw;

  // This is a milli-second correction that is applied every 1000
  // seconds, which means it is a part-per-million correction.
  //
  // If the watch is running fast, then we want to make this positive.
  //
  // If the watch is running slow, then we want to make this negative.
  //
  // If the watch is exactly on time, then it shuold be 0.
  millis_delta_t millis_adjust;

  // number of seconds since we last applied millis_adjust.
  uint16_t seconds_since_last_adjust;

  uint8_t color;

} Watch_t;

uint8_t _watch_days_per_month[] = {
