diff -Nur tcl8.4.6-01/generic/tclClock.c tcl8.4.6/generic/tclClock.c
--- tcl8.4.6-01/generic/tclClock.c	Wed Mar 24 16:50:40 2004
+++ tcl8.4.6/generic/tclClock.c	Wed Mar 24 20:56:09 2004
@@ -312,7 +312,7 @@
         } else {
             savedTZEnv = NULL;
 	}
-        Tcl_SetVar2(interp, "env", "TZ", "GMT", TCL_GLOBAL_ONLY);
+        Tcl_SetVar2(interp, "env", "TZ", "GMT0", TCL_GLOBAL_ONLY);
 #   ifdef HAVE_TIMEZONE_VAR
         savedTimeZone = timezone;
         timezone = 0;
diff -Nur tcl8.4.6-01/unix/tcl.m4 tcl8.4.6/unix/tcl.m4
--- tcl8.4.6-01/unix/tcl.m4	Wed Mar 24 17:32:17 2004
+++ tcl8.4.6/unix/tcl.m4	Wed Mar 24 23:05:13 2004
@@ -1195,6 +1195,12 @@
 	    # Allow tcl to link with inet_ntoa, mkstemp, gethostbyaddr,
 	    # inet_addr, and getservbyname.
 	    LIBS="$LIBS -lbsd"
+
+	    # Struct timezone's tz_dsttime member is not a boolean
+	    # indication of whether or not Daylight Saving Time is in
+	    # effect.  (It's the algorithm to be used for DST
+	    # correction.)
+	    AC_DEFINE(STRUCT_TIMEZONE_TZ_DSTTIME_NOT_BOOLEAN)
 	    ;;
 	MP-RAS-02*)
 	    SHLIB_CFLAGS="-K PIC"
diff -Nur tcl8.4.6-01/unix/tclUnixTime.c tcl8.4.6/unix/tclUnixTime.c
--- tcl8.4.6-01/unix/tclUnixTime.c	Fri Jul 19 12:31:10 2002
+++ tcl8.4.6/unix/tclUnixTime.c	Wed Mar 24 23:04:03 2004
@@ -222,10 +222,12 @@
 
     gettimeofday(&tv, &tz);
     timeZone = tz.tz_minuteswest;
+#ifndef STRUCT_TIMEZONE_TZ_DSTTIME_NOT_BOOLEAN
     if (tz.tz_dsttime) {
         timeZone += 60;
     }
-    
+#endif
+
     return timeZone;
 #endif
 
