diff --git a/src/sbbs3/xtrn.cpp b/src/sbbs3/xtrn.cpp
index a090fa7e971a7a44fd170e8522bfd7d579324a96..716ed739caabd7e56cb1254e00e8eef6b5ec2d4e 100644
--- a/src/sbbs3/xtrn.cpp
+++ b/src/sbbs3/xtrn.cpp
@@ -1119,8 +1119,22 @@ int sbbs_t::external(const char* cmdline, long mode, const char* startup_dir)
 		setenv("SBBSDATA",cfg.data_dir,1);
 		setenv("SBBSEXEC",cfg.exec_dir,1);
 		sprintf(str,"%u",cfg.node_num);
-		if(setenv("SBBSNNUM",str,1))
-        	errormsg(WHERE,ERR_WRITE,"environment",0);
+		setenv("SBBSNNUM",str,1);
+
+		/* date/time env vars */
+		now = time(NULL);
+		struct	tm tm;
+		if(localtime_r(&now, &tm) == NULL)
+			memset(&tm, 0, sizeof(tm));
+		sprintf(str," %02u", tm.tm_mday);
+		setenv("DAY", str, /* overwrite */TRUE);
+		setenv("WEEKDAY", wday[tm.tm_wday], /* overwrite */TRUE);
+		setenv("MONTHNAME", mon[tm.tm_mon], /* overwrite */TRUE);
+		sprintf(str, "%02u", tm.tm_mon + 1);
+		setenv("MONTH", str, /* overwrite */TRUE);
+		sprintf(str,"%u", 1900 + tm.tm_year);
+		if(setenv("YEAR", str, /* overwrite */TRUE) != 0)
+			errormsg(WHERE,ERR_WRITE,"environment",0);
 
 	} else {
 		if(startup->options&BBS_OPT_NO_DOS) {