diff --git a/src/sbbs3/data.cpp b/src/sbbs3/data.cpp
index 08bedb7caf49f3878e73abf23eb69dec2ab28c9b..10f5af77901ac6514fea7b00796d99ff473d1549 100644
--- a/src/sbbs3/data.cpp
+++ b/src/sbbs3/data.cpp
@@ -100,7 +100,7 @@ uint sbbs_t::finduser(const char* name, bool silent_failure)
 /****************************************************************************/
 /* Return date/time that the specified event should run next				*/
 /****************************************************************************/
-extern "C" time_t getnexteventtime(event_t* event)
+extern "C" time_t getnexteventtime(const event_t* event)
 {
 	struct tm tm;
 	time_t	t = time(NULL);
@@ -143,7 +143,7 @@ extern "C" time_t getnexteventtime(event_t* event)
 /* Return time of next forced timed event									*/
 /* 'event' may be NULL														*/
 /****************************************************************************/
-extern "C" time_t getnextevent(scfg_t* cfg, event_t* event)
+extern "C" time_t getnextevent(scfg_t* cfg, event_t** event)
 {
     int     i;
 	time_t	event_time=0;
@@ -164,7 +164,7 @@ extern "C" time_t getnextevent(scfg_t* cfg, event_t* event)
 		if(!event_time || thisevent<event_time) {
 			event_time=thisevent;
 			if(event!=NULL)
-				*event=*cfg->event[i];
+				*event = cfg->event[i];
 		}
 	}
 
@@ -180,7 +180,7 @@ uint sbbs_t::gettimeleft(bool handle_out_of_time)
 {
     char    str[128];
 	char 	tmp[512];
-	event_t	nextevent;
+	event_t* nextevent{nullptr};
 
 	now=time(NULL);
 
@@ -188,8 +188,8 @@ uint sbbs_t::gettimeleft(bool handle_out_of_time)
 
 	/* Timed event time reduction handler */
 	event_time=getnextevent(&cfg, &nextevent);
-	if(event_time)
-		event_code=nextevent.code;
+	if(event_time && nextevent != nullptr)
+		event_code=nextevent->code;
 
 	if(event_time && now+(time_t)timeleft>event_time) {    /* less time, set flag */
 		if(event_time<now)
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index b954735288bcf9762e2b0c3dbb8b9aefd1276d29..92b0eb477f092573fa60ce9577230e7993599997 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -1319,8 +1319,8 @@ extern "C" {
 	DLLEXPORT void		fcloselog(FILE*);
 
 	/* data.cpp */
-	DLLEXPORT time_t	getnextevent(scfg_t* cfg, event_t* event);
-	DLLEXPORT time_t	getnexteventtime(event_t* event);
+	DLLEXPORT time_t	getnextevent(scfg_t* cfg, event_t**);
+	DLLEXPORT time_t	getnexteventtime(const event_t*);
 
 	/* sockopt.c */
 	DLLEXPORT int		set_socket_options(scfg_t* cfg, SOCKET sock, const char* section