diff --git a/epicardium/modules/rtc.c b/epicardium/modules/rtc.c
index a72ffe8fcdc5e4cc3e87e5352a2e2c3bafa25608..8aa2e3f650cb236f8cae4de106bbcfaeca004333 100644
--- a/epicardium/modules/rtc.c
+++ b/epicardium/modules/rtc.c
@@ -58,6 +58,15 @@ int epic_rtc_schedule_alarm(uint32_t timestamp)
 {
 	int res;
 
+	/*
+	 * Check if the timestamp lies in the past and if so, trigger
+	 * immediately.
+	 */
+	if (epic_rtc_get_seconds() >= timestamp) {
+		api_interrupt_trigger(EPIC_INT_RTC_ALARM);
+		return 0;
+	}
+
 	NVIC_EnableIRQ(RTC_IRQn);
 
 	while ((res = RTC_SetTimeofdayAlarm(MXC_RTC, timestamp)) == E_BUSY)