   Watch.minutes = minutes;
   Watch.hours = hours;
   Watch.millis_adjust = millis_adjust;
+  Watch.seconds_since_last_adjust = 0;
   Watch.needs_redraw = 1;
 }
 

  // watch_tick returns.
  uint8_t needs_redraw;

  // this is the number of milliseconds to add to
  // the standard 1000 when calculating when to increment
  // seconds. If the watch keeps perfect time, this value would be 0.
  //
  // If the watch is running too quick, then make this value positive to slow it
  // down.
  //
  // If the watch is running too slow, then make this value negative to speed it
  // up.
  millis_delta_t millis_adjust;
} Watch_t;

uint8_t _watch_days_per_month[] = {

  millis_delta_t elapsed = now - W.next_second_millis;

  if (elapsed > 0) {
    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;

