diff --git a/EXEC/SBBS.EXE b/EXEC/SBBS.EXE
index a6caee08df66b72fea3fa4b79b9e9878ef5ba7c7..547c303aada1f98c9f05d89e4ec6543440e7a4a6 100644
Binary files a/EXEC/SBBS.EXE and b/EXEC/SBBS.EXE differ
diff --git a/SRC/DEFS.H b/SRC/DEFS.H
index 0966d9ce282b8942ced8dd5750329883801b9060..aab4311a3ba2cf17113ed14e2872268bf14db1d7 100644
--- a/SRC/DEFS.H
+++ b/SRC/DEFS.H
@@ -23,6 +23,8 @@
 #define REVISION	6		/* Revision number */
 #define BETA		0		/* Beta release? */
 
+#define Y2K_2DIGIT_WINDOW	70
+#define TM_YEAR(yy)		((yy)%100)
 
 #if !DEMO
 
diff --git a/SRC/QWK.C b/SRC/QWK.C
index 5e9f1ebdf9eda30942c898779eaccbc7902defe7..fec3f1f4d17965bb28acb38959966855849a4dca 100644
--- a/SRC/QWK.C
+++ b/SRC/QWK.C
@@ -242,7 +242,10 @@ if(length<2)
 	return(0);
 date.da_mon=((qwkbuf[8]&0xf)*10)+(qwkbuf[9]&0xf);
 date.da_day=((qwkbuf[11]&0xf)*10)+(qwkbuf[12]&0xf);
-date.da_year=((qwkbuf[14]&0xf)*10)+(qwkbuf[15]&0xf)+1900;
+date.da_year=((qwkbuf[14]&0xf)*10)+(qwkbuf[15]&0xf);
+if(date.da_year<Y2K_2DIGIT_WINDOW)
+	date.da_year+=100;
+date.da_year+=1900;
 curtime.ti_hour=((qwkbuf[16]&0xf)*10)+(qwkbuf[17]&0xf);
 curtime.ti_min=((qwkbuf[19]&0xf)*10)+(qwkbuf[20]&0xf);
 curtime.ti_sec=0;
@@ -721,7 +724,7 @@ if(mail && !(sys_status&SS_ABORT)) {
 			p=strchr(tmp,'@');              /* remove the system id */
 			if(p!=NULL) *p=0; }
 		sprintf(tmp2,"%02u-%02u-%02u%02u:%02u"
-			,date.da_mon,date.da_day,date.da_year-1900
+			,date.da_mon,date.da_day,TM_YEAR(date.da_year-1900)
 			,curtime.ti_hour,curtime.ti_min);
 		sprintf(str,"%c%-7d%-13.13s%-25.25s"
 			"%-25.25s%-25.25s%12s%-8d%-6lu\xe1%c%c%c%c%c"
@@ -832,7 +835,7 @@ for(i=0;i<usrgrps;i++) {
 					if(p!=NULL) *p=0; }
 				n=((i+1)*100)+j+1;	/* ggss */
 				sprintf(tmp2,"%02u-%02u-%02u%02u:%02u"
-					,date.da_mon,date.da_day,date.da_year-1900
+					,date.da_mon,date.da_day,TM_YEAR(date.da_year-1900)
 					,curtime.ti_hour,curtime.ti_min);
 				if(msg[k]->mode&MSG_PRIVATE) {
 					if(msg[k]->mode&MSG_READ)
@@ -1073,7 +1076,7 @@ for(i=0;i<qhub[hubnum]->subs;i++) {
 		n=qhub[hubnum]->conf[i];
 		unixtodos(msg[k]->time,&date,&curtime);
 		sprintf(tmp2,"%02u-%02u-%02u%02u:%02u"
-			,date.da_mon,date.da_day,date.da_year-1900
+			,date.da_mon,date.da_day,TM_YEAR(date.da_year-1900)
 			,curtime.ti_hour,curtime.ti_min);
 
 		if(msg[k]->mode&MSG_PRIVATE) {
@@ -1450,7 +1453,10 @@ for(l=128;l<size;l+=i*128) {
 				strcpy(tmp,useron.alias); }
 		date.da_mon=((block[8]&0xf)*10)+(block[9]&0xf);
 		date.da_day=((block[11]&0xf)*10)+(block[12]&0xf);
-		date.da_year=((block[14]&0xf)*10)+(block[15]&0xf)+1900;
+		date.da_year=((block[14]&0xf)*10)+(block[15]&0xf);
+		if(date.da_year<Y2K_2DIGIT_WINDOW)
+			date.da_year+=100;
+		date.da_year+=1900;
 		curtime.ti_hour=((block[16]&0xf)*10)+(block[17]&0xf);
 		curtime.ti_min=((block[19]&0xf)*10)+(block[20]&0xf);
         curtime.ti_sec=0;
@@ -1616,7 +1622,10 @@ for(l=128;l<size;l+=i*128) {
 
 	date.da_mon=((block[8]&0xf)*10)+(block[9]&0xf);
 	date.da_day=((block[11]&0xf)*10)+(block[12]&0xf);
-	date.da_year=((block[14]&0xf)*10)+(block[15]&0xf)+1900;
+	date.da_year=((block[14]&0xf)*10)+(block[15]&0xf);
+	if(date.da_year<Y2K_2DIGIT_WINDOW)
+		date.da_year+=100;
+	date.da_year+=1900;
 	curtime.ti_hour=((block[16]&0xf)*10)+(block[17]&0xf);
 	curtime.ti_min=((block[19]&0xf)*10)+(block[20]&0xf);
 	curtime.ti_sec=0;