diff --git a/src/lib-sieve/plugins/date/tst-date.c b/src/lib-sieve/plugins/date/tst-date.c
index 3997bcd84721a022af2d71aaf9e15a2058b1072d..50ed57df4636bcf1aecd5d340f6d17d5607f8c1c 100644
--- a/src/lib-sieve/plugins/date/tst-date.c
+++ b/src/lib-sieve/plugins/date/tst-date.c
@@ -503,12 +503,12 @@ static int tst_date_operation_execute
 		/* Convert timestamp to struct tm */
 
 		if ( (date_tm=gmtime(&date_value)) == NULL ) {
-			sieve_interpreter_set_test_result(renv->interp, FALSE);
-			return SIEVE_EXEC_OK;
+			got_date = FALSE;
+		} else {
+			/* Extract the date part */
+			part_value = ext_date_part_extract
+				(str_c(date_part), date_tm, wanted_zone);
 		}
-
-		/* Extract the date part */
-		part_value = ext_date_part_extract(str_c(date_part), date_tm, wanted_zone);
 	}
 
 	/* Initialize match */