diff --git a/src/sbbs2/smm/smb2smm.c b/src/sbbs2/smm/smb2smm.c
index c2cc14965d206c87f9c0b7e06184c8f18d1b6645..de596dd12851e1c9ddebfb7716bd1f899a76d774 100644
--- a/src/sbbs2/smm/smb2smm.c
+++ b/src/sbbs2/smm/smb2smm.c
@@ -125,7 +125,7 @@ time_t dstrtounix(char *str)
 if(!strncmp(str,"00/00/00",8))
 	return(0);
 curtime.ti_hour=curtime.ti_min=curtime.ti_sec=0;
-if(str[6]<7)
+if(str[6]<'7')
 	date.da_year=2000+((str[6]&0xf)*10)+(str[7]&0xf);
 else
 	date.da_year=1900+((str[6]&0xf)*10)+(str[7]&0xf);
@@ -161,6 +161,8 @@ if(birth[0]<=SP)
 	return(0);
 getdate(&date);
 age=(date.da_year-1900)-(((birth[6]&0xf)*10)+(birth[7]&0xf));
+if(age>90)
+	age-=90;
 if(atoi(birth)>12 || atoi(birth+3)>31)
 	return(0);
 if(((birth[0]&0xf)*10)+(birth[1]&0xf)>date.da_mon ||
diff --git a/src/sbbs2/smm/smm.c b/src/sbbs2/smm/smm.c
index fbd3667c5e7d40bba58531211db4db64ce273a80..d71d05826691f6b6268664d0f8c18317f4a9c590 100644
--- a/src/sbbs2/smm/smm.c
+++ b/src/sbbs2/smm/smm.c
@@ -589,6 +589,8 @@ if(birth[0]<=SP)
 	return(0);
 getdate(&date);
 age=(date.da_year-1900)-(((birth[6]&0xf)*10)+(birth[7]&0xf));
+if(age>90)
+	age-=90;
 if(atoi(birth)>12 || atoi(birth+3)>31)
 	return(0);
 if(((birth[0]&0xf)*10)+(birth[1]&0xf)>date.da_mon ||
diff --git a/src/sbbs2/smm/smmutil.c b/src/sbbs2/smm/smmutil.c
index 85ddcf7b532e5f32202f59fbca8baf073673083c..d2c5eaa695b4c8b5de4b7b04710093a81a21a5fe 100644
--- a/src/sbbs2/smm/smmutil.c
+++ b/src/sbbs2/smm/smmutil.c
@@ -45,6 +45,8 @@ if(birth[0]<=SP)
 	return(0);
 getdate(&date);
 age=(date.da_year-1900)-(((birth[6]&0xf)*10)+(birth[7]&0xf));
+if(age>90)
+	age-=90;
 if(atoi(birth)>12 || atoi(birth+3)>31)
 	return(0);
 if(((birth[0]&0xf)*10)+(birth[1]&0xf)>date.da_mon ||
@@ -75,7 +77,7 @@ now=time(NULL);
 gm=localtime(&now);
 fseek(log,0L,SEEK_END);
 fprintf(log,"%02u/%02u/%02u %02u:%02u:%02u %s\r\n"
-    ,gm->tm_mon+1,gm->tm_mday,gm->tm_year,gm->tm_hour,gm->tm_min,gm->tm_sec
+    ,gm->tm_mon+1,gm->tm_mday,TM_YEAR(gm->tm_year),gm->tm_hour,gm->tm_min,gm->tm_sec
     ,buf);
 fflush(log);
 }
diff --git a/src/sbbs2/uti/uti.c b/src/sbbs2/uti/uti.c
index 4564ff09260f4bba3877aac197152e2f1752d6c2..fb290e0a3313ec0656cda46b083c3de32912d501 100644
--- a/src/sbbs2/uti/uti.c
+++ b/src/sbbs2/uti/uti.c
@@ -219,8 +219,8 @@ if(!code) {
 	gotoxy(txtinfo.curx,txtinfo.cury); }
 t=time(NULL);
 unixtodos(t,&date,&curtime);
-sprintf(str,"%02u/%02u/%02u %02u:%02u:%02u    Exiting (%d)\r\n\r\n"
-	,date.da_mon,date.da_day,date.da_year-1900
+sprintf(str,"%02u/%02u/%u %02u:%02u:%02u    Exiting (%d)\r\n\r\n"
+	,date.da_mon,date.da_day,date.da_year
 	,curtime.ti_hour,curtime.ti_min,curtime.ti_sec
 	,code);
 write(logfile,str,strlen(str));
@@ -282,7 +282,7 @@ if((logfile=nopen(str,O_WRONLY|O_CREAT|O_APPEND))==-1) {
 t=time(NULL);
 tm=gmtime(&t);
 sprintf(str,"%02u/%02u/%02u %02u:%02u:%02u    %-8s %s \""
-	,tm->tm_mon+1,tm->tm_mday,tm->tm_year
+	,tm->tm_mon+1,tm->tm_mday,TM_YEAR(tm->tm_year)
 	,tm->tm_hour,tm->tm_min,tm->tm_sec
 	,name,VER);
 printf("\n\n");
diff --git a/src/sbbs2/uti/utiexprt.c b/src/sbbs2/uti/utiexprt.c
index 0a338d9713945848a42d760671f1fc9b5dc03cdc..a5a44daf2b38c22dceac8f15cad9da31b3c8caf3 100644
--- a/src/sbbs2/uti/utiexprt.c
+++ b/src/sbbs2/uti/utiexprt.c
@@ -135,7 +135,7 @@ for(l=0;l<posts;l++) {
 		"%s\r\n%c\r\n%c\r\nTEXT:\r\n"
 		,msg.hdr.number
 		,msg.hdr.thread_orig
-		,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
 		,msg.hdr.attr&MSG_PRIVATE ? "PRIVATE" : "PUBLIC"
 		,msg.hdr.attr&MSG_READ ? 'Y':'N'
diff --git a/src/sbbs2/uti/utiimprt.c b/src/sbbs2/uti/utiimprt.c
index 29390c804a5e4d48fb8eba370c5184d9dadd59d4..acfac0697e964cdb5202401fe9172d69a296378b 100644
--- a/src/sbbs2/uti/utiimprt.c
+++ b/src/sbbs2/uti/utiimprt.c
@@ -71,7 +71,10 @@ printf("\rdstrtounix           ");
 #endif
 
 curtime.ti_hour=curtime.ti_min=curtime.ti_sec=0;
-date.da_year=1900+((str[6]&0xf)*10)+(str[7]&0xf);
+date.da_year=((str[6]&0xf)*10)+(str[7]&0xf);
+if(date.da_year<Y2K_2DIGIT_WINDOW)
+	date.da_year+=100;
+date.da_year+=1900;
 date.da_mon=((str[0]&0xf)*10)+(str[1]&0xf);
 date.da_day=((str[3]&0xf)*10)+(str[4]&0xf);
 return(dostounix(&date,&curtime));