Instead of calling mktime(), which has all sorts of unwanted side
effects, simply zero out the struct tm buffer before using it; this
should take care of the BSD folks' concern just as well.
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 8f5695d..6c938c2 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -304,6 +304,8 @@
 	char *outbuf = 0;
 	int i;
 
+	memset((ANY *) &buf, '\0', sizeof(buf));
+
 	if (!PyArg_ParseTuple(args, "s(iiiiiiiii)",
 			      &fmt,
 			      &(buf.tm_year),
@@ -321,12 +323,6 @@
 	buf.tm_mon--;
 	buf.tm_wday = (buf.tm_wday + 1) % 7;
 	buf.tm_yday--;
-#ifdef HAVE_MKTIME
-	/* This call is only there to adjust the numbers to be within
-	   bounds.  When we don't have mktime(), we say the caller is
-	   responsible for that... */
-	(void) mktime(&buf);
-#endif
 	/* I hate these functions that presume you know how big the output
 	 * will be ahead of time...
 	 */