--- ./pp_sys.c-pre	Fri Sep 12 12:19:56 2003
+++ ./pp_sys.c	Thu Sep 18 10:32:08 2003
@@ -3084,7 +3084,7 @@ PP(pp_ftmtime)
     dSP; dTARGET;
     if (result < 0)
 	RETPUSHUNDEF;
-    PUSHn( (PL_basetime - PL_statcache.st_mtime) / 86400.0 );
+    PUSHn( (((NV)PL_basetime - PL_statcache.st_mtime)) / 86400.0 );
     RETURN;
 }
 
@@ -3094,7 +3094,7 @@ PP(pp_ftatime)
     dSP; dTARGET;
     if (result < 0)
 	RETPUSHUNDEF;
-    PUSHn( (PL_basetime - PL_statcache.st_atime) / 86400.0 );
+    PUSHn( (((NV)PL_basetime - PL_statcache.st_atime)) / 86400.0 );
     RETURN;
 }
 
@@ -3104,7 +3104,7 @@ PP(pp_ftctime)
     dSP; dTARGET;
     if (result < 0)
 	RETPUSHUNDEF;
-    PUSHn( (PL_basetime - PL_statcache.st_ctime) / 86400.0 );
+    PUSHn( (((NV)PL_basetime - PL_statcache.st_ctime)) / 86400.0 );
     RETURN;
 }
 
--- ./os2/os2ish.h-pppre	Tue Sep 16 23:35:28 2003
+++ ./os2/os2ish.h	Thu Sep 18 10:40:26 2003
@@ -14,6 +14,11 @@
  */
 #define HAS_UTIME		/**/
 
+/* BIG_TIME:
+ *	This symbol is defined if Time_t is an unsigned type on this system.
+ */
+#define BIG_TIME
+
 #define HAS_KILL
 #define HAS_WAIT
 #define HAS_DLERROR
--- ./t/op/time.t-pre	Fri Aug  8 14:09:52 2003
+++ ./t/op/time.t	Thu Sep 18 10:35:58 2003
@@ -3,10 +3,10 @@
 # $RCSfile: time.t,v $$Revision: 4.1 $$Date: 92/08/07 18:28:32 $
 
 if ( $does_gmtime = gmtime(time) ) { 
-    print "1..7\n" 
+    print "1..12\n"
 }
 else { 
-    print "1..4\n" 
+    print "1..9\n" 
 }
 
 
@@ -73,3 +73,17 @@ ok(gmtime() =~ /^(Sun|Mon|Tue|Wed|Thu|Fr
                /x,
    'gmtime(), scalar context'
   );
+
+sleep(3);
+my $f = 'tstamp.tmp';
+unlink $f;
+ok (open(S, "> $f"), 'can create tmp file');
+close S or die;
+my @a = stat $f;
+print "# time=$^T, stat=(@a)\n";
+my @b = (-M _, -A _, -C _);
+print "# -MAC=(@b)\n";
+ok( (-M _) < 0, 'negative -M works');
+ok( (-A _) < 0, 'negative -A works');
+ok( (-C _) < 0, 'negative -A works');
+ok(unlink($f), 'unlink tmp file');
