Improve detection of whether tzset is broken.
diff --git a/configure.in b/configure.in
index 70e1ff9..78ccfe1 100644
--- a/configure.in
+++ b/configure.in
@@ -2810,20 +2810,39 @@
 AC_TRY_RUN([
 #include <stdlib.h>
 #include <time.h>
+#include <string.h>
 int main()
 {
-	int gmt_hour;
-	int eastern_hour;
-	time_t now;
-	now = time((time_t*)NULL);
+	/* Note that we need to ensure that not only does tzset(3)
+	   do 'something' with localtime, but it works as documented
+	   in the library reference and as expected by the test suite.
+
+	   Red Hat 6.2 doesn't understand the southern hemisphere 
+	   after New Year's Day; it thinks swaps on that day.
+	*/
+
+	time_t groundhogday = 1044144000; /* GMT-based; well, it's a colony */
+	time_t midyear = groundhogday + (365 * 24 * 3600 / 2);
+
 	putenv("TZ=UTC+0");
 	tzset();
-	gmt_hour = localtime(&now)->tm_hour;
+	if (localtime(&groundhogday)->tm_hour != 0)
+	    exit(1);
+
 	putenv("TZ=EST+5EDT,M4.1.0,M10.5.0");
 	tzset();
-	eastern_hour = localtime(&now)->tm_hour;
-	if (eastern_hour == gmt_hour)
+	if (localtime(&groundhogday)->tm_hour != 19)
 	    exit(1);
+
+	putenv("TZ=AEST-10AEDT-11,M10.5.0,M3.5.0");
+	tzset();
+	if (localtime(&groundhogday)->tm_hour != 11)
+	    exit(1);
+	if (strcmp(localtime(&groundhogday)->tm_zone, "AEDT"))
+	    exit(1);
+	if (strcmp(localtime(&midyear)->tm_zone, "AEST"))
+	    exit(1);
+
 	exit(0);
 }
 ],