   bool gotOverflow = false;     // does the growbed have an overflow?
   int fillLevel = 7;            // cms below the level sensor: drain point
   bool filling = false;         // true when closed / on
-  long lastFlip = -1;           // millis at last state change
+  unsigned long lastFlip = -1;  // millis at last state change
   int floodMins = 18;
 
   Valve() { number = counter++; }

    staggerMins = cycleMins / numValves;
    dbg(valveDBG, "cycleMins = "); dbg(valveDBG, cycleMins);
    dbg(valveDBG, " staggerMins = "); dln(valveDBG, staggerMins);
    long t = millis();
    dbg(valveDBG, "millis = "); dln(valveDBG, t);
    long nextCycleStart = t;
    for(int i = 0; i < numValves; i++) {

    monitor_t* now = &monitorData[monitorCursor];
    if(monitorSize < MONITOR_POINTS)
      monitorSize++;
    now->timestamp = millisWrapper();
    if(GOT_TEMP_SENSOR) {
      getTemperature(&now->waterCelsius);               yield();
    }
