 	// save alarm setting to parts of SRAM, easier retrieval
 	RTC.sramWrite(ALARM_H_ADDR, hour);
 	RTC.sramWrite(ALARM_M_ADDR, minute);
+
+	lastAlarmTrigger = 0;
 }
 
 // Debug statements, print new alarm / status to serial port.


			oldFsmState = fsmState;

			if (alarmTriggeredToday && ((millis() - lastAlarmCleared) > ALARM_CLEAR_DURATION))
			{
				alarmTriggeredToday = 0;
			}

			if ((millis() - lastClockRead) > updateInterval)
			{
				updateTime();

void playSong()
{
	display.disableDisplay();
	int melody[] = {1319, 0, 1319, 0, 1319, 0, 1319, 0, 1976, 0, 1976, 0, 1976,
	 0, 1976, 0, 1760, 0, 1760, 0, 1760, 0, 1760, 0, 1976, 0, 1976, 0, 1976, 0, 
	 1976, 0, 2349, 0, 2349, 0, 2349, 0, 2349, 0, 1760, 0, 1760, 0, 1760, 0,
	  1760, 0, 1760, 0, 1760, 0, 1760, 0, 1760, 0, 1760, 0, 1760, 0, 1760, 0,
	   1760, 0};

	int noteDurations[] = {63, 42, 63, 42, 63, 42, 63, 42, 63, 42, 63, 42, 63,
	 42, 63, 42, 63, 42, 63, 42, 63, 42, 63, 42, 63, 42, 63, 42, 63, 42, 63, 42,
	  63, 42, 63, 42, 63, 42, 63, 42, 63, 42, 63, 42, 63, 42, 63, 42, 63, 42,
	   63, 42, 63, 42, 63, 42, 63, 42, 63, 42, 63, 42, 63, 42};

	// iterate over the notes of the melody:
	for (int thisNote = 0; thisNote < 64; thisNote++)
