diff --git a/src/sbbs3/atcodes.cpp b/src/sbbs3/atcodes.cpp
index c8a88721902d54b0545ff56eef4429e14a521800..e2b801535c1509db1c9fe47934d32b85217836bd 100644
--- a/src/sbbs3/atcodes.cpp
+++ b/src/sbbs3/atcodes.cpp
@@ -308,7 +308,7 @@ char* sbbs_t::atcode(char* sp, char* str, size_t maxlen)
 	if(!strcmp(sp,"EVENT")) {
 		if(event_time==0)
 			return("<none>");
-		return(timestr(&event_time));
+		return(timestr(event_time));
 	}
 
 	/* LASTCALL */
@@ -439,7 +439,7 @@ char* sbbs_t::atcode(char* sp, char* str, size_t maxlen)
 	}
 
 	if(!strcmp(sp,"LASTON"))
-		return(timestr(&useron.laston));
+		return(timestr(useron.laston));
 
 	if(!strcmp(sp,"LASTDATEON"))
 		return(unixtodstr(&cfg,useron.laston,str));
@@ -508,7 +508,7 @@ char* sbbs_t::atcode(char* sp, char* str, size_t maxlen)
 		return(unixtodstr(&cfg,ns_time,str));
 
 	if(!strcmp(sp,"NEWFILETIME"))
-		return(timestr(&ns_time));
+		return(timestr(ns_time));
 
 	/* MAXDL */
 
@@ -961,7 +961,7 @@ char* sbbs_t::atcode(char* sp, char* str, size_t maxlen)
 	if(!strcmp(sp,"MSG_SUBJECT") && current_msg!=NULL)
 		return(current_msg->subj==NULL ? nulstr : current_msg->subj);
 	if(!strcmp(sp,"MSG_DATE") && current_msg!=NULL)
-		return(time32str((time32_t *)&current_msg->hdr.when_written.time));
+		return(timestr(current_msg->hdr.when_written.time));
 	if(!strcmp(sp,"MSG_TIMEZONE") && current_msg!=NULL)
 		return(smb_zonestr(current_msg->hdr.when_written.zone,NULL));
 	if(!strcmp(sp,"MSG_ATTR") && current_msg!=NULL) {
diff --git a/src/sbbs3/chat.cpp b/src/sbbs3/chat.cpp
index 88f694f739e872d948aec3822f14cf1ca2c97d2e..bedaebe17f33551b0212af5d9a11786229e34b28 100644
--- a/src/sbbs3/chat.cpp
+++ b/src/sbbs3/chat.cpp
@@ -1315,7 +1315,7 @@ void sbbs_t::nodemsg()
 					,username(&cfg,usernumber,tmp),usernumber);
 				sprintf(buf,text[TelegramFmt]
 					,thisnode.misc&NODE_ANON ? text[UNKNOWN_USER] : useron.alias
-					,timestr(&now));
+					,timestr(now));
 				i=0;
 				logbuf[0]=0;
 				while(online && i<5) {
diff --git a/src/sbbs3/data.cpp b/src/sbbs3/data.cpp
index 73111b3d980dd6d948a9375a1a7e4bfcffb101fc..5f2dadd847598168a339a0ad15dbfbe94ef56dee 100644
--- a/src/sbbs3/data.cpp
+++ b/src/sbbs3/data.cpp
@@ -213,7 +213,7 @@ ulong sbbs_t::gettimeleft(bool handle_out_of_time)
 			timeleft=event_time-now; 
 		if(!(sys_status&SS_EVENT)) {
 			lprintf(LOG_NOTICE,"Node %d Time reduced (to %s) due to upcoming event (%s) on %s"
-				,cfg.node_num,sectostr(timeleft,tmp),event_code,timestr(&event_time));
+				,cfg.node_num,sectostr(timeleft,tmp),event_code,timestr(event_time));
 			sys_status|=SS_EVENT;
 		}
 	}
@@ -234,7 +234,7 @@ ulong sbbs_t::gettimeleft(bool handle_out_of_time)
 			logline(nulstr,"Ran out of time");
 			SAVELINE;
 			if(sys_status&SS_EVENT)
-				bprintf(text[ReducedTime],timestr(&event_time));
+				bprintf(text[ReducedTime],timestr(event_time));
 			bputs(text[TimesUp]);
 			if(!(sys_status&(SS_EVENT|SS_USERON)) && useron.cdt>=100L*1024L
 				&& !(cfg.sys_misc&SM_NOCDTCVT)) {
diff --git a/src/sbbs3/date_str.c b/src/sbbs3/date_str.c
index b0e6b369d0cdb8dbc16b9fd87a5c160473249e23..492703ce290278e3850c09b9c51f64ff10eb04ac 100644
--- a/src/sbbs3/date_str.c
+++ b/src/sbbs3/date_str.c
@@ -150,20 +150,13 @@ char* DLLCALL hhmmtostr(scfg_t* cfg, struct tm* tm, char* str)
 /* Generates a 24 character ASCII string that represents the time_t pointer */
 /* Used as a replacement for ctime()                                        */
 /****************************************************************************/
-char* DLLCALL time32str(scfg_t *cfg, time32_t *intime, char *str)
-{
-	time_t	tmptime=*intime;
-
-	return(timestr(cfg,&tmptime,str));
-}
-
-char* DLLCALL timestr(scfg_t* cfg, time_t *intime, char* str)
+char* DLLCALL timestr(scfg_t* cfg, time_t intime, char* str)
 {
     char*		mer;
 	uchar		hour;
     struct tm	tm;
 
-	if(localtime_r(intime,&tm)==NULL) {
+	if(localtime_r(&intime,&tm)==NULL) {
 		strcpy(str,"Invalid Time");
 		return(str); 
 	}
diff --git a/src/sbbs3/execfunc.cpp b/src/sbbs3/execfunc.cpp
index 704f150cceffd7e23e735965e134838d094c0957..a80c265a20631dd2606e239c0518e895bb384c74 100644
--- a/src/sbbs3/execfunc.cpp
+++ b/src/sbbs3/execfunc.cpp
@@ -409,10 +409,10 @@ int sbbs_t::exec_function(csi_t *csi)
 			bputs(" for files ");
 			if(*(csi->ip-1)==CS_FILE_FIND_OLD_UPLOADS) {
 				l=FI_OLDUL;
-				bprintf("uploaded before %s\r\n",timestr(&ns_time)); }
+				bprintf("uploaded before %s\r\n",timestr(ns_time)); }
 			else if(*(csi->ip-1)==CS_FILE_FIND_OLD) { /* go by download date */
 				l=FI_OLD;
-				bprintf("not downloaded since %s\r\n",timestr(&ns_time)); }
+				bprintf("not downloaded since %s\r\n",timestr(ns_time)); }
 			else if(*(csi->ip-1)==CS_FILE_FIND_OFFLINE) {
 				l=FI_OFFLINE;
 				bputs("not online...\r\n"); }
diff --git a/src/sbbs3/execmisc.cpp b/src/sbbs3/execmisc.cpp
index e98bbfac5caf27da6a852e92faee89dc9883fbe0..d094432b7a740a51a2b16415449b69a9d74c34c5 100644
--- a/src/sbbs3/execmisc.cpp
+++ b/src/sbbs3/execmisc.cpp
@@ -532,7 +532,7 @@ int sbbs_t::exec_misc(csi_t* csi, char *path)
 					lp=getintvar(csi,*(int32_t *)csi->ip);
 					csi->ip+=4; /* Skip int variable name */
 					if(pp && lp) {
-						strcpy(str,time32str(lp));
+						strcpy(str,timestr(*lp));
 						*pp=copystrvar(csi,*pp,str); }
 					return(0);
 				case DATE_STR:
diff --git a/src/sbbs3/file.cpp b/src/sbbs3/file.cpp
index 3ccbe520826a87a529b095b3e22e87344859df27..ada47550b1a632bcab866ff50d4f1c1f74d41e09 100644
--- a/src/sbbs3/file.cpp
+++ b/src/sbbs3/file.cpp
@@ -71,9 +71,9 @@ void sbbs_t::fileinfo(file_t* f)
 	bprintf(text[FiDescription],f->desc);
 	bprintf(text[FiUploadedBy],f->misc&FM_ANON ? text[UNKNOWN_USER] : f->uler);
 	if(f->date)
-		bprintf(text[FiFileDate],time32str(&f->date));
-	bprintf(text[FiDateUled],time32str(&f->dateuled));
-	bprintf(text[FiDateDled],f->datedled ? time32str(&f->datedled) : "Never");
+		bprintf(text[FiFileDate],timestr(f->date));
+	bprintf(text[FiDateUled],timestr(f->dateuled));
+	bprintf(text[FiDateDled],f->datedled ? timestr(f->datedled) : "Never");
 	bprintf(text[FiTimesDled],f->timesdled);
 	if(f->size!=-1L)
 		bprintf(text[FiTransferTime],sectostr(f->timetodl,tmp));
diff --git a/src/sbbs3/getmsg.cpp b/src/sbbs3/getmsg.cpp
index 153efce4b3fd57c397958b45ad6d75431e2e9059..6c44bb37dc2c936f2d5f2fc9aeb9a413e852acec 100644
--- a/src/sbbs3/getmsg.cpp
+++ b/src/sbbs3/getmsg.cpp
@@ -153,7 +153,7 @@ void sbbs_t::show_msghdr(smbmsg_t* msg)
 			bprintf(text[MsgFromNet],smb_netaddr(&msg->from_net)); 
 	}
 	bprintf(text[MsgDate]
-		,time32str((time32_t *)&msg->hdr.when_written.time)
+		,timestr(msg->hdr.when_written.time)
 		,smb_zonestr(msg->hdr.when_written.zone,NULL));
 
 	CRLF;
@@ -163,7 +163,7 @@ void sbbs_t::show_msghdr(smbmsg_t* msg)
 			sender=(char *)msg->hfield_dat[i];
 		if(msg->hfield[i].type==FORWARDED && sender)
 			bprintf(text[ForwardedFrom],sender
-				,time32str((time32_t *)msg->hfield_dat[i])); }
+				,timestr(*(time32_t *)msg->hfield_dat[i])); }
 
 	/* Debug stuff
 	if(SYSOP) {
@@ -231,7 +231,7 @@ void sbbs_t::msgtotxt(smbmsg_t* msg, char *str, int header, int tails)
 		if(msg->from_net.addr)
 			fprintf(out," (%s)",smb_netaddr(&msg->from_net));
 		fprintf(out,"\r\nDate : %.24s %s"
-			,time32str((time32_t *)&msg->hdr.when_written.time)
+			,timestr(msg->hdr.when_written.time)
 			,smb_zonestr(msg->hdr.when_written.zone,NULL));
 		fprintf(out,"\r\n\r\n"); }
 
diff --git a/src/sbbs3/inkey.cpp b/src/sbbs3/inkey.cpp
index 555ba0e7e32dd154a3da02458fd40bf4aec6e271..20c06a6671bbc7034ca7690157ce0d47b7c48ba5 100644
--- a/src/sbbs3/inkey.cpp
+++ b/src/sbbs3/inkey.cpp
@@ -221,8 +221,8 @@ char sbbs_t::handle_ctrlkey(char ch, long mode)
 			SAVELINE;
 			attr(LIGHTGRAY);
 			now=time(NULL);
-			bprintf(text[TiLogon],timestr(&logontime));
-			bprintf(text[TiNow],timestr(&now));
+			bprintf(text[TiLogon],timestr(logontime));
+			bprintf(text[TiNow],timestr(now));
 			bprintf(text[TiTimeon]
 				,sectostr(now-logontime,tmp));
 			bprintf(text[TiTimeLeft]
diff --git a/src/sbbs3/js_system.c b/src/sbbs3/js_system.c
index 91b1ddff3f52f73c230d420ccb17755da09174cf..6019e7e42e5551622856cac7387835006e5b3a6b 100644
--- a/src/sbbs3/js_system.c
+++ b/src/sbbs3/js_system.c
@@ -912,7 +912,7 @@ js_timestr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 	else
 		JS_ValueToInt32(cx,argv[0],&i);
 	t=i;
-	timestr(cfg,&t,str);
+	timestr(cfg,t,str);
 	if((js_str = JS_NewStringCopyZ(cx, str))==NULL)
 		return(JS_FALSE);
 
diff --git a/src/sbbs3/logfile.cpp b/src/sbbs3/logfile.cpp
index f5eb71b5460a5d7804a745a4affc1d6456563caa..fc73a3cb15506b29342ec83f5e4cd5dd6f2d1eeb 100644
--- a/src/sbbs3/logfile.cpp
+++ b/src/sbbs3/logfile.cpp
@@ -53,7 +53,7 @@ extern "C" BOOL DLLCALL hacklog(scfg_t* cfg, char* prot, char* user, char* text,
 	sprintf(hdr,"SUSPECTED %s HACK ATTEMPT from %s on %.24s\r\nUsing port %u at %s [%s]\r\nDetails: "
 		,prot
 		,user
-		,timestr(cfg,&now,tstr)
+		,timestr(cfg,now,tstr)
 		,addr->sin_port
 		,host
 		,inet_ntoa(addr->sin_addr)
@@ -94,7 +94,7 @@ extern "C" BOOL DLLCALL spamlog(scfg_t* cfg, char* prot, char* action
 	sprintf(hdr,"SUSPECTED %s SPAM %s on %.24s\r\nHost: %s [%s]\r\nFrom: %.128s %s\r\nReason: "
 		,prot
 		,action
-		,timestr(cfg,&now,tstr)
+		,timestr(cfg,now,tstr)
 		,host
 		,ip_addr
 		,from
@@ -115,7 +115,7 @@ void sbbs_t::logentry(char *code, char *entry)
 	char str[512];
 
 	now=time(NULL);
-	sprintf(str,"Node %2d  %s\r\n   %s",cfg.node_num,timestr(&now),entry);
+	sprintf(str,"Node %2d  %s\r\n   %s",cfg.node_num,timestr(now),entry);
 	logline(code,str);
 }
 
@@ -366,7 +366,7 @@ void sbbs_t::errorlog(char *text)
 		errorlog_inside=0;
 		return; }
 	sprintf(hdr,"%s Node %2d: %s #%d"
-		,timestr(&now),cfg.node_num,useron.alias,useron.number);
+		,timestr(now),cfg.node_num,useron.alias,useron.number);
 	write(file,hdr,strlen(hdr));
 	write(file,crlf,2);
 	write(file,text,strlen(text));
diff --git a/src/sbbs3/logon.cpp b/src/sbbs3/logon.cpp
index 1060ae7c1d6dbe69016cac5945492a3eb49ff4ba..be7daca0891a8bba919cf212c09f8fa811fcc07f 100644
--- a/src/sbbs3/logon.cpp
+++ b/src/sbbs3/logon.cpp
@@ -494,7 +494,7 @@ bool sbbs_t::logon()
 	}
 
 	if(sys_status&SS_EVENT)
-		bprintf(text[ReducedTime],timestr(&event_time));
+		bprintf(text[ReducedTime],timestr(event_time));
 	getnodedat(cfg.node_num,&thisnode,1);
 	thisnode.misc&=~(NODE_AOFF|NODE_POFF);
 	if(useron.chat&CHAT_NOACT)
@@ -604,7 +604,7 @@ ulong sbbs_t::logonstats()
 	if((tm.tm_mday>update_tm.tm_mday && tm.tm_mon==update_tm.tm_mon)
 		|| tm.tm_mon>update_tm.tm_mon || tm.tm_year>update_tm.tm_year) {
 
-		sprintf(str,"New Day - Prev: %s ",timestr(&update_t));
+		sprintf(str,"New Day - Prev: %s ",timestr(update_t));
 		logentry("!=",str);
 
 		sys_status|=SS_DAILY;       /* New Day !!! */
diff --git a/src/sbbs3/mail.cpp b/src/sbbs3/mail.cpp
index 0fe374a0f718b61efa047448254537596ae622d4..3d7e7bd77c6d4c1eb8f1466361f0084587ebb61a 100644
--- a/src/sbbs3/mail.cpp
+++ b/src/sbbs3/mail.cpp
@@ -141,7 +141,7 @@ void sbbs_t::telluser(smbmsg_t* msg)
 	if(n>cfg.sys_nodes) {
 		now=time(NULL);
 		sprintf(str,text[UserReadYourMail]
-			,useron.alias,timestr(&now));
+			,useron.alias,timestr(now));
 		putsmsg(&cfg,usernumber,str); }
 }
 
diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c
index 5af83f5fbc1798e84344ad5ee26f66c5ed6776c6..d78cbf400c55173ba0d8f2cf4345a6cb1b0ecd1d 100644
--- a/src/sbbs3/mailsrvr.c
+++ b/src/sbbs3/mailsrvr.c
@@ -2565,7 +2565,7 @@ static void smtp_thread(void* arg)
 						safe_snprintf(str,sizeof(str)
 							,"\7\1n\1hOn %.24s\r\n\1m%s \1n\1msent you e-mail from: "
 							"\1h%s\1n\r\n"
-							,time32str(&scfg,&newmsg.hdr.when_imported.time,tmp)
+							,timestr(&scfg,newmsg.hdr.when_imported.time,tmp)
 							,sender,sender_addr);
 						if(!newmsg.idx.to) {	/* Forwarding */
 							strcat(str,"\1mand it was automatically forwarded to: \1h");
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 8c62ddd12ca3ff32861033b760f384d352a49711..b6b7428b43b99809d96e65844ccbce04e16d03f4 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -2401,7 +2401,7 @@ void event_thread(void* arg)
 							,sbbs->cfg.event[i]->node,sbbs->cfg.event[i]->code);
 						eprintf(LOG_DEBUG,"%s event last run: %s (0x%08lx)"
 							,sbbs->cfg.event[i]->code
-							,time32str(&sbbs->cfg, &sbbs->cfg.event[i]->last, str)
+							,timestr(&sbbs->cfg, sbbs->cfg.event[i]->last, str)
 							,sbbs->cfg.event[i]->last);
 						lastnodechk=0;	 /* really last event time check */
 						start=time(NULL);
diff --git a/src/sbbs3/msgtoqwk.cpp b/src/sbbs3/msgtoqwk.cpp
index 8a6a176116ec5c23ee8c9a514a633607722510fc..7c7dcaddbe4b6931db895187cfb9bb6db388b1d5 100644
--- a/src/sbbs3/msgtoqwk.cpp
+++ b/src/sbbs3/msgtoqwk.cpp
@@ -163,7 +163,7 @@ ulong sbbs_t::msgtoqwk(smbmsg_t* msg, FILE *qwk_fp, long mode, int subnum
 			p=(char *)msg->hfield_dat[i];
 		if(msg->hfield[i].type==FORWARDED && p) {
 			sprintf(str,"Forwarded from %s on %s%c",p
-				,time32str((time32_t *)msg->hfield_dat[i])
+				,timestr(*(time32_t *)msg->hfield_dat[i])
 				,QWK_NEWLINE);
 			fwrite(str,strlen(str),1,qwk_fp);
 			size+=strlen(str); 
diff --git a/src/sbbs3/postmsg.cpp b/src/sbbs3/postmsg.cpp
index 9b1ce132c4d12df2615ad6c1f7f83009b13b5812..b239804fadc857550d6e8eae16cca5f76020bdc0 100644
--- a/src/sbbs3/postmsg.cpp
+++ b/src/sbbs3/postmsg.cpp
@@ -86,7 +86,7 @@ bool sbbs_t::postmsg(uint subnum, smbmsg_t *remsg, long wm_mode)
 			SAFECOPY(touser,from);
 		msgattr=(ushort)(remsg->hdr.attr&MSG_PRIVATE);
 		sprintf(top,text[RegardingByToOn],title,from,remsg->to
-			,time32str((time32_t *)&remsg->hdr.when_written.time)
+			,timestr(remsg->hdr.when_written.time)
 			,smb_zonestr(remsg->hdr.when_written.zone,NULL)); 
 	} else {
 		title[0]=0;
diff --git a/src/sbbs3/readmail.cpp b/src/sbbs3/readmail.cpp
index 3f90ea31b08e3d5350ef795b197f6f5c617c6451..f401b01d5e4e7b3801f3e4d9ee2660037681c296 100644
--- a/src/sbbs3/readmail.cpp
+++ b/src/sbbs3/readmail.cpp
@@ -384,7 +384,7 @@ void sbbs_t::readmail(uint usernumber, int which)
 					sprintf(str2,text[Regarding],msg.subj);
 				else						/* Reply to other */
 					sprintf(str2,text[RegardingByOn],msg.subj,msg.from
-						,time32str((time32_t *)&msg.hdr.when_written.time));
+						,timestr(msg.hdr.when_written.time));
 
 				p=strrchr(str,'@');
 				if(p) { 							/* name @addr */
diff --git a/src/sbbs3/readmsgs.cpp b/src/sbbs3/readmsgs.cpp
index fa458512612c827dd28fbda2b0c9998ccf7dded6..a204dd4183da82bc602c517d3fdd89aed024a6a2 100644
--- a/src/sbbs3/readmsgs.cpp
+++ b/src/sbbs3/readmsgs.cpp
@@ -119,9 +119,9 @@ void sbbs_t::msghdr(smbmsg_t* msg)
 
 	/* fixed fields */
 	bprintf("%-16.16s %s %s\r\n","when_written"	
-		,time32str((time32_t *)&msg->hdr.when_written.time), smb_zonestr(msg->hdr.when_written.zone,NULL));
+		,timestr(msg->hdr.when_written.time), smb_zonestr(msg->hdr.when_written.zone,NULL));
 	bprintf("%-16.16s %s %s\r\n","when_imported"	
-		,time32str((time32_t *)&msg->hdr.when_imported.time), smb_zonestr(msg->hdr.when_imported.zone,NULL));
+		,timestr(msg->hdr.when_imported.time), smb_zonestr(msg->hdr.when_imported.zone,NULL));
 	bprintf("%-16.16s %04Xh\r\n","type"				,msg->hdr.type);
 	bprintf("%-16.16s %04Xh\r\n","version"			,msg->hdr.version);
 	bprintf("%-16.16s %04Xh\r\n","attr"				,msg->hdr.attr);
@@ -143,12 +143,12 @@ void sbbs_t::msghdr(smbmsg_t* msg)
 	if(msg->hdr.times_downloaded)
 		bprintf("%-16.16s %lu\r\n"	,"times_downloaded"	,msg->hdr.times_downloaded);
 	if(msg->hdr.last_downloaded)
-		bprintf("%-16.16s %s\r\n"	,"last_downloaded"	,time32str((time32_t *)&msg->hdr.last_downloaded));
+		bprintf("%-16.16s %s\r\n"	,"last_downloaded"	,timestr(msg->hdr.last_downloaded));
 
 	/* convenience integers */
 	if(msg->expiration)
 		bprintf("%-16.16s %s\r\n"	,"expiration"	
-			,time32str((time32_t *)&msg->expiration));
+			,timestr(msg->expiration));
 	if(msg->priority)
 		bprintf("%-16.16s %lu\r\n"	,"priority"			,msg->priority);
 	if(msg->cost)
@@ -813,7 +813,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 					break;
 				sprintf(str2,text[Regarding]
 					,msg.subj
-					,time32str((time32_t *)&msg.hdr.when_written.time));
+					,timestr(msg.hdr.when_written.time));
 				if(msg.from_net.addr==NULL)
 					strcpy(str,msg.from);
 				else if(msg.from_net.type==NET_FIDO)
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index 3ad5c85715b60cb3b5483f614aaa235645bb8b34..c106d2b48c87ea1ef3ac3914b793ccfba9b12e03 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -438,8 +438,7 @@ public:
 	bool	gettimeleft_inside;
 
 	/* str.cpp */
-	char*	time32str(time32_t *intime);
-	char*	timestr(time_t *intime);
+	char*	timestr(time_t intime);
     char	timestr_output[60];
 	void	userlist(long mode);
 	size_t	gettmplt(char *outstr, char *tmplt, long mode);
@@ -869,8 +868,7 @@ extern "C" {
 	DLLEXPORT char *	DLLCALL unixtodstr(scfg_t*, time_t, char *str);
 	DLLEXPORT char *	DLLCALL sectostr(uint sec, char *str);		
 	DLLEXPORT char *	DLLCALL hhmmtostr(scfg_t* cfg, struct tm* tm, char* str);
-	DLLEXPORT char *	DLLCALL time32str(scfg_t* cfg, time32_t *intime, char* str);
-	DLLEXPORT char *	DLLCALL timestr(scfg_t* cfg, time_t *intime, char* str);
+	DLLEXPORT char *	DLLCALL timestr(scfg_t* cfg, time_t intime, char* str);
 	DLLEXPORT when_t	DLLCALL rfc822date(char* p);
 	DLLEXPORT char *	DLLCALL msgdate(when_t when, char* buf);
 
diff --git a/src/sbbs3/scandirs.cpp b/src/sbbs3/scandirs.cpp
index d50a48fd316b0dd310c351431a9efa2b1bb209e7..9bfc82ea73b30b06f593740b7e3967264d3e5d57 100644
--- a/src/sbbs3/scandirs.cpp
+++ b/src/sbbs3/scandirs.cpp
@@ -55,7 +55,7 @@ void sbbs_t::scandirs(long mode)
 		return; }
 	if(ch!='A') {
 		if(mode&FL_ULTIME) {			/* New file scan */
-			bprintf(text[NScanHdr],timestr(&ns_time));
+			bprintf(text[NScanHdr],timestr(ns_time));
 			str[0]=0; }
 		else if(mode==FL_NO_HDR) {		/* Search for a string */
 			if(!getfilespec(tmp))
@@ -117,7 +117,7 @@ void sbbs_t::scanalldirs(long mode)
 	if(!usrlibs) return;
 	k=0;
 	if(mode&FL_ULTIME) {			/* New file scan */
-		bprintf(text[NScanHdr],timestr(&ns_time));
+		bprintf(text[NScanHdr],timestr(ns_time));
 		str[0]=0; }
 	else if(mode==FL_NO_HDR) {		/* Search for a string */
 		if(!getfilespec(tmp))
diff --git a/src/sbbs3/scansubs.cpp b/src/sbbs3/scansubs.cpp
index c5b19fa08a1994496da48f18394dea5cf0053054..c593e5514d831617fb568c839807201102bc4505 100644
--- a/src/sbbs3/scansubs.cpp
+++ b/src/sbbs3/scansubs.cpp
@@ -247,7 +247,7 @@ void sbbs_t::new_scan_ptr_cfg()
 				if(t>(long)l)
 					l=t;
 				bprintf(text[SubPtrLstFmt],j+1,cfg.sub[usrsub[i][j]]->lname
-					,timestr(&t),nulstr); }
+					,timestr(t),nulstr); }
 			SYNC;
 			mnemonics(text[WhichOrAll]);
 			s=getkeys("AQ",usrsubs[i]);
diff --git a/src/sbbs3/smbutil.c b/src/sbbs3/smbutil.c
index e2c2d18d17c79634760c5317805f04e6bec2347c..194cfa281a60a809cfeefedcb6d75984843a7f59 100644
--- a/src/sbbs3/smbutil.c
+++ b/src/sbbs3/smbutil.c
@@ -510,14 +510,13 @@ char *binstr(uchar *buf, ushort length)
 /* Generates a 24 character ASCII string that represents the time_t pointer */
 /* Used as a replacement for ctime()                                        */
 /****************************************************************************/
-char *my_timestr(time32_t *intime)
+char *my_timestr(time_t intime)
 {
     static char str[256];
     char mer[3],hour;
     struct tm *gm;
-	time_t	tt=*intime;
 
-	gm=localtime(&tt);
+	gm=localtime(&intime);
 	if(gm==NULL) {
 		strcpy(str,"Invalid Time");
 		return(str); 
@@ -560,7 +559,7 @@ void dumpindex(ulong start, ulong count)
 
 		printf("%4lu %04hX %04hX %04Xh %04Xh %06X %s\n"
 			,idx.number,idx.from,idx.to,idx.subj,idx.attr
-			,idx.offset,my_timestr(&idx.time));
+			,idx.offset,my_timestr(idx.time));
 		l++; 
 	}
 }
@@ -626,7 +625,7 @@ void dump_hashes(void)
 		printf("%-10s: %lu\n",		"Number",	hash.number);
 		printf("%-10s: %s\n",		"Source",	smb_hashsourcetype(hash.source));
 		printf("%-10s: %lu\n",		"Length",	hash.length);
-		printf("%-10s: %s\n",		"Time",		my_timestr(&hash.time));
+		printf("%-10s: %s\n",		"Time",		my_timestr(hash.time));
 		printf("%-10s: %x\n",		"Flags",	hash.flags);
 		if(hash.flags&SMB_HASH_CRC16)
 			printf("%-10s: %04x\n",	"CRC-16",	hash.crc16);
@@ -1338,7 +1337,7 @@ void readmsgs(ulong start)
 			if(msg.from_net.type)
 				printf(" (%s)",smb_netaddr(&msg.from_net));
 			printf("\nDate : %.24s %s"
-				,my_timestr(&msg.hdr.when_written.time)
+				,my_timestr(msg.hdr.when_written.time)
 				,smb_zonestr(msg.hdr.when_written.zone,NULL));
 
 			printf("\n\n");
diff --git a/src/sbbs3/str.cpp b/src/sbbs3/str.cpp
index 2b403f1ed3aed6f69fb62f45a2a2fb89f4581f5b..1ff7201808bf45a415073e83000ee487b66ec0b2 100644
--- a/src/sbbs3/str.cpp
+++ b/src/sbbs3/str.cpp
@@ -578,7 +578,7 @@ bool sbbs_t::inputnstime(time_t *dt)
 	char str[256];
 
 	bputs(text[NScanDate]);
-	bputs(timestr(dt));
+	bputs(timestr(*dt));
 	CRLF;
 	if(localtime_r(dt,&tm)==NULL) {
 		errormsg(WHERE,ERR_CHK,"time ptr",0);
@@ -836,13 +836,7 @@ bool sbbs_t::trashcan(char *insearchof, char *name)
 	return(result);
 }
 
-char* sbbs_t::time32str(time32_t *intime)
-{
-	time_t intime32=*intime;
-	return(::timestr(&cfg,&intime32,timestr_output));
-}
-
-char* sbbs_t::timestr(time_t *intime)
+char* sbbs_t::timestr(time_t intime)
 {
 	return(::timestr(&cfg,intime,timestr_output));
 }
diff --git a/src/sbbs3/tmp_xfer.cpp b/src/sbbs3/tmp_xfer.cpp
index 66ed47a002094ddfd8257f46e400cf82b85aa5f7..b27be779363747d4044c31094ead91be5057e3a3 100644
--- a/src/sbbs3/tmp_xfer.cpp
+++ b/src/sbbs3/tmp_xfer.cpp
@@ -219,7 +219,7 @@ void sbbs_t::temp_xfer()
 					t=fdate(g.gl_pathv[i]);
 					bprintf("%-25s %15s   %s\r\n",getfname(g.gl_pathv[i])
 						,ultoac(flength(g.gl_pathv[i]),tmp)
-						,timestr(&t));
+						,timestr(t));
 					files++;
 					bytes+=flength(g.gl_pathv[i]);
 				}
@@ -412,7 +412,7 @@ ulong sbbs_t::create_filelist(char *name, long mode)
 		return(0); }
 	k=0;
 	if(mode&FL_ULTIME) {
-		sprintf(str,"New files since: %s\r\n",timestr(&ns_time));
+		sprintf(str,"New files since: %s\r\n",timestr(ns_time));
 		write(file,str,strlen(str)); }
 	for(i=j=d=0;i<usrlibs;i++) {
 		for(j=0;j<usrdirs[i];j++,d++) {
diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c
index 080864788c155243c186a560eb36d96a315147f7..d5d2910a42fd941ea5aaa216fe3fdfbe1aa0652a 100644
--- a/src/sbbs3/userdat.c
+++ b/src/sbbs3/userdat.c
@@ -2446,7 +2446,7 @@ BOOL DLLCALL filter_ip(scfg_t* cfg, char* prot, char* reason, char* host
     	return(FALSE);
 
     fprintf(fp,"\n; %s %s by %s on %s\n"
-    	,prot,reason,username,timestr(cfg,&now,tstr));
+    	,prot,reason,username,timestr(cfg,now,tstr));
 
 	if(host!=NULL)
 		fprintf(fp,"; Hostname: %s\n",host);
diff --git a/src/sbbs3/writemsg.cpp b/src/sbbs3/writemsg.cpp
index 5b2d54c8ecf80166fa04576b39c4cfc3b1879843..51379d52ac2ff5fd447e576e9b9d21603de63bdb 100644
--- a/src/sbbs3/writemsg.cpp
+++ b/src/sbbs3/writemsg.cpp
@@ -1170,7 +1170,7 @@ void sbbs_t::automsg()
 						sprintf(tmp,"%.80s",text[Anonymous]);
 					else
 						sprintf(tmp,"%s #%d",useron.alias,useron.number);
-					sprintf(str,text[AutoMsgBy],tmp,timestr(&now));
+					sprintf(str,text[AutoMsgBy],tmp,timestr(now));
 					strcat(str,"          ");
 					write(file,str,strlen(str));
 					write(file,buf,strlen(buf));
diff --git a/src/sbbs3/xtrn_sec.cpp b/src/sbbs3/xtrn_sec.cpp
index 3c5b67a6b5d9c0e4876f7cfe11fa5ae58bbfb599..1a7dda8b07cee3cb1b989a179032c0872fa8b332 100644
--- a/src/sbbs3/xtrn_sec.cpp
+++ b/src/sbbs3/xtrn_sec.cpp
@@ -1760,7 +1760,7 @@ bool sbbs_t::exec_xtrn(uint xtrnnum)
 		getnodedat(cfg.node_num,&thisnode,0);
 		now=time(NULL);
 		sprintf(str,hungupstr,useron.alias,cfg.xtrn[thisnode.aux-1]->name
-			,timestr(&now));
+			,timestr(now));
 		write(file,str,strlen(str));
 		close(file); 
 	}