         lamps[lamp].fade(cycleFade[lamp], colors[random(0, 215)]);
       }
     }
-    else if(water[lamp] != 0) {
-      if(millis() > water[lamp]) {
-        waterCur[lamp] = (waterCur[lamp] + 1) % 748;
-        lamps[lamp].setColor(waterCols[waterCur[lamp]]);
-        water[lamp] += 100;
+    else if (waterFade[lamp] != 0) {
+      if (!lamps[lamp].fade()) {
+        waterCur[lamp] = (waterCur[lamp] + 1) % 747;
+        lamps[lamp].fade(waterFade[lamp], waterCols[waterCur[lamp]++]);
       }
     }
   }

// We need to be able to stop the fading
void unset(int lamp) {
  cycleFade[lamp] = 0;
  lamps[lamp].fadeStop();
}


        for(int lamp = 0; lamp < 4; lamp++) {
          unset(lamp);
          cycleFade[lamp] = time*1000.0;
        }
      }
    }
    else if (ctrl == 11) {
      //CycleFade for lamp(s)
      char ctime[1];
      Serial.readBytes(ctime,1);
      int time = ctime[0];

      if (selected_lamp < 4) {
        unset(selected_lamp);
        waterFade[selected_lamp] = time*10;
      }
      else {
        for(int lamp = 0; lamp < 4; lamp++) {
          unset(lamp);
          waterFade[lamp] = time*10;
        }
      }
    }
