Index: lib/libqof/qof/gnc-date.c
===================================================================
--- lib/libqof/qof/gnc-date.c	(revision 16739)
+++ lib/libqof/qof/gnc-date.c	(working copy)
@@ -1164,15 +1164,16 @@
   localtime_r(&tmp, &parsed);
 
   secs = gnc_timezone (&parsed);
-  tz_hour = secs / 3600;
-  tz_min = (secs % 3600) / 60;
 
   /* We also have to print the sign by hand, to work around a bug
    * in the glibc 2.1.3 printf (where %+02d fails to zero-pad).
    */
   cyn = '-';
-  if (0>tz_hour) { cyn = '+'; tz_hour = -tz_hour; }
+  if (0>secs) { cyn = '+'; secs = -secs; }
 
+  tz_hour = secs / 3600;
+  tz_min = (secs % 3600) / 60;
+
   len = sprintf (buff, "%4d-%02d-%02d %02d:%02d:%02d.%06ld %c%02d%02d",
                  parsed.tm_year + 1900,
                  parsed.tm_mon + 1,
