       uint32_t now = curTime;
       bool curShowColon = !(curTimeFractions >> 31);
       interrupts();
-      if (now != prevTime || prevShowColon != curShowColon) {
+      if (now != prevTime) {
+        if (timeExpireSeconds > 0) {
+          --timeExpireSeconds;
+        } else {
+          timeExpireSeconds = 0;
+          knowTime = 0;
+          setDigits(10, 10, 10, 10, B8(0110000));
+        }
+      }
+      if (knowTime && (now != prevTime || prevShowColon != curShowColon)) {
         prevTime = now;
         struct tm tm;
         gmtime_r(now, &tm);

static const unsigned int timerPreload = 65536 - systemHz / prescaler / (1 / bitLength) + finetuning;

static const double two_to_32 = 4294967296.0;

// how much to advance curTimeFractions in the interrupt handler
volatile uint32_t fractionsPerOverflow = two_to_32 * bitLength;

      previousNtp = t1;
      previousNtpFractions = t2;
      knowTime = true;
      timeExpireSeconds = maxTimeAge;
    }
  }
  digitalWrite(debug, LOW);
