diff --git a/src/timezone/zic.c b/src/timezone/zic.c
index f5b7ddf92c77f61d2993aac45b022660433620c1..b546a1737299b803569102d4816d5b0bff844e31 100644
--- a/src/timezone/zic.c
+++ b/src/timezone/zic.c
@@ -1179,11 +1179,14 @@ gethms(char const * string, char const * errstring, bool signable)
 		error("%s", errstring);
 		return 0;
 	}
-	if (ZIC_MAX / SECSPERHOUR < (zic_t) hh)
+	/* Some compilers warn that this test is unsatisfiable for 32-bit ints */
+#if INT_MAX > PG_INT32_MAX
+	if (ZIC_MAX / SECSPERHOUR < hh)
 	{
 		error(_("time overflow"));
 		return 0;
 	}
+#endif
 	if (noise && (hh > HOURSPERDAY ||
 				  (hh == HOURSPERDAY && (mm != 0 || ss != 0))))
 		warning(_("values over 24 hours not handled by pre-2007 versions of zic"));