diff --git a/src/knot/events/events.c b/src/knot/events/events.c
index c468443372ea0b26653eacb3de11033e5f8af735..a4894326edf7aab90788725982aa547b7c439b07 100644
--- a/src/knot/events/events.c
+++ b/src/knot/events/events.c
@@ -351,7 +351,8 @@ void _zone_events_schedule_at(zone_t *zone, ...)
 		}
 
 		time_t current = event_get_time(events, type);
-		if (planned == 0 || current == 0 || planned < current) {
+		if (current == 0 || (planned == 0 && !events->forced[type]) ||
+		    (planned > 0 && planned < current)) {
 			event_set_time(events, type, planned);
 		}
 	}