diff --git a/pycardium/modules/utime.c b/pycardium/modules/utime.c
index 13012d79d975a36e032c4f2f49985eba84b007ed..a3a1173f67ed8f8f5b291be96f333dad0aa5d796 100644
--- a/pycardium/modules/utime.c
+++ b/pycardium/modules/utime.c
@@ -15,6 +15,7 @@
 
 /* MicroPython has its epoch at 2000-01-01. Our RTC is in UTC */
 #define EPOCH_OFFSET 946684800UL
+#define TZONE_OFFSET 7600UL
 
 static mp_obj_t time_set_time(mp_obj_t secs)
 {
@@ -36,7 +37,7 @@ static MP_DEFINE_CONST_FUN_OBJ_1(time_set_unix_time_obj, time_set_unix_time);
 static mp_obj_t time_time(void)
 {
 	mp_int_t seconds;
-	seconds = epic_rtc_get_seconds() - EPOCH_OFFSET;
+	seconds = epic_rtc_get_seconds() - EPOCH_OFFSET + TZONE_OFFSET;
 	return mp_obj_new_int(seconds);
 }
 MP_DEFINE_CONST_FUN_OBJ_0(time_time_obj, time_time);
@@ -46,7 +47,7 @@ static mp_obj_t time_localtime(size_t n_args, const mp_obj_t *args)
 	mp_int_t seconds;
 
 	if (n_args == 0 || args[0] == mp_const_none) {
-		seconds = epic_rtc_get_seconds() - EPOCH_OFFSET;
+		seconds = epic_rtc_get_seconds() - EPOCH_OFFSET + TZONE_OFFSET;
 	} else {
 		seconds = mp_obj_get_int(args[0]);
 	}
@@ -98,7 +99,8 @@ static MP_DEFINE_CONST_FUN_OBJ_1(time_mktime_obj, time_mktime);
 /* Schedule an alarm */
 static mp_obj_t time_alarm(size_t n_args, const mp_obj_t *args)
 {
-	mp_int_t timestamp = mp_obj_get_int(args[0]) + EPOCH_OFFSET;
+	mp_int_t timestamp =
+		mp_obj_get_int(args[0]) + EPOCH_OFFSET - TZONE_OFFSET;
 	if (n_args == 2) {
 		/* If a callback was given, register it for the RTC Alarm */
 		mp_obj_t callback = args[1];