   
   //Only power down in normal mode, the rest of the time, at max performance
   if(currentState == NORMAL) {
-      LowPower.powerDown(SLEEP_30MS, ADC_OFF, BOD_OFF);
+      LowPower.powerDown(SLEEP_15Ms, ADC_OFF, BOD_OFF);
+      
+      //This is to give the Arduino sufficient time to wake up. Without this, the alarm may not engage as I suspect the millis() is affected
+      delay(15); 
   }
   
 }

boolean showLCD = true;

void loop(){
    
  int leftButtonState = digitalRead(LEFT_BUTTON_PIN);
  int middleButtonState = digitalRead(MIDDLE_BUTTON_PIN);
  int rightPinState = digitalRead(RIGHT_BUTTON_PIN);

  
  unsigned long currentMillis = millis();
  
  
  
  if(hour == alarmHour && minute == alarmMinute && currentState == NORMAL
  && ((currentMillis - alarmLastStarted) > MIN_TIME_BETWEEN_ALARM_STARTS)
  && (alarmVibrate || alarmSound)){
