diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index ea0a8be..2834738 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -88,22 +88,22 @@
 */
 static long timezone;
 
-static void 
+static void
 initmactimezone(void)
 {
 	MachineLocation	loc;
 	long		delta;
 
 	ReadLocation(&loc);
-	
+
 	if (loc.latitude == 0 && loc.longitude == 0 && loc.u.gmtDelta == 0)
 		return;
-	
+
 	delta = loc.u.gmtDelta & 0x00FFFFFF;
-	
+
 	if (delta & 0x00800000)
 		delta |= 0xFF000000;
-	
+
 	timezone = -delta;
 }
 #endif /* macintosh */
@@ -162,10 +162,10 @@
 
 	if (LargeIntegerEqualToZero(divisor)) {
 		QueryPerformanceCounter(&ctrStart);
-		if (!QueryPerformanceFrequency(&divisor) || 
+		if (!QueryPerformanceFrequency(&divisor) ||
 		    LargeIntegerEqualToZero(divisor)) {
-				/* Unlikely to happen - 
-				   this works on all intel machines at least! 
+				/* Unlikely to happen -
+				   this works on all intel machines at least!
 				   Revert to clock() */
 			return PyFloat_FromDouble(clock());
 		}
@@ -174,10 +174,10 @@
 	diff = LargeIntegerSubtract(now, ctrStart);
 	diff = LargeIntegerDivide(diff, divisor, &rem);
 	/* XXX - we assume both divide results fit in 32 bits.  This is
-	   true on Intels.  First person who can afford a machine that 
+	   true on Intels.  First person who can afford a machine that
 	   doesnt deserves to fix it :-)
 	*/
-	return PyFloat_FromDouble((double)diff.LowPart + 
+	return PyFloat_FromDouble((double)diff.LowPart +
 		              ((double)rem.LowPart / (double)divisor.LowPart));
 }
 
@@ -341,7 +341,7 @@
 		buf = *localtime(&tt);
 	} else if (!gettmarg(tup, &buf))
 		return NULL;
-	
+
 	fmtlen = strlen(fmt);
 
 	/* I hate these functions that presume you know how big the output
@@ -447,7 +447,7 @@
 	double dt;
 	time_t tt;
 	char *p;
-	
+
 	if (PyTuple_Size(args) == 0)
 		tt = time(NULL);
 	else {
@@ -491,7 +491,7 @@
 	tt = mktime(&buf);
 	if (tt == (time_t)(-1)) {
 		PyErr_SetString(PyExc_OverflowError,
-                                "mktime argument out of range");
+				"mktime argument out of range");
 		return NULL;
 	}
 #if defined(macintosh) && defined(USE_GUSI211)
@@ -584,7 +584,7 @@
 strftime() -- convert time tuple to string according to format specification\n\
 strptime() -- parse string to time tuple according to format specification\n\
 ";
-  
+
 
 DL_EXPORT(void)
 inittime(void)
@@ -599,7 +599,7 @@
 	/* Squirrel away the module's dictionary for the y2k check */
 	Py_INCREF(d);
 	moddict = d;
-#if defined(HAVE_TZNAME) && !defined(__GLIBC__)
+#if defined(HAVE_TZNAME) && !defined(__GLIBC__) && !defined(__CYGWIN__)
 	tzset();
 #ifdef PYOS_OS2
 	ins(d, "timezone", PyInt_FromLong((long)_timezone));
@@ -617,7 +617,7 @@
 #endif
 	ins(d, "daylight", PyInt_FromLong((long)daylight));
 	ins(d, "tzname", Py_BuildValue("(zz)", tzname[0], tzname[1]));
-#else /* !HAVE_TZNAME || __GLIBC__ */
+#else /* !HAVE_TZNAME || __GLIBC__ || __CYGWIN__*/
 #ifdef HAVE_TM_ZONE
 	{
 #define YEAR ((time_t)((365 * 24 + 6) * 3600))
@@ -635,7 +635,7 @@
 		julyzone = -p->tm_gmtoff;
 		strncpy(julyname, p->tm_zone ? p->tm_zone : "   ", 9);
 		julyname[9] = '\0';
-		
+
 		if( janzone < julyzone ) {
 			/* DST is reversed in the southern hemisphere */
 			ins(d, "timezone", PyInt_FromLong(julyzone));
@@ -673,7 +673,7 @@
 	ins(d, "daylight", PyInt_FromLong(_daylight));
 	ins(d, "tzname", Py_BuildValue("(zz)", _tzname[0], _tzname[1]));
 #endif /* __CYGWIN__ */
-#endif /* !HAVE_TZNAME || __GLIBC__ */
+#endif /* !HAVE_TZNAME || __GLIBC__ || __CYGWIN__*/
 }
 
 
@@ -820,7 +820,7 @@
 		if( secs <= 0.0 ) {
 			return;
 		}
-		
+
 		Py_BEGIN_ALLOW_THREADS
 		/* BeOS snooze() is in microseconds... */
 		if( snooze( (bigtime_t)( secs * 1000.0 * 1000.0 ) ) == B_INTERRUPTED ) {
