diff --git a/src/sbbs3/con_out.cpp b/src/sbbs3/con_out.cpp
index eeb79cd86ebedfdb88a21a05ed4c395a3c535fee..4abcc4966ef411511b73585275f4361a1393a3c2 100644
--- a/src/sbbs3/con_out.cpp
+++ b/src/sbbs3/con_out.cpp
@@ -1398,8 +1398,8 @@ void sbbs_t::progress(const char* text, int count, int total, int interval)
 
 	if(cfg.node_num == 0)
 		return;	// Don't output this for events
-	clock_t now = msclock();
-	if(now - last_progress < interval)
+	double now = xp_timer();
+	if((now - last_progress) * 1000 < interval)
 		return;
 	if(text == NULL) text = "";
 	float pct = total ? ((float)count/total)*100.0F : 100.0F;
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index 66320f60a5a18bb807e5ceb9af52f5b52d4d9ba3..6563815f7d7aa8758fd315556e245e3c79336bf8 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -848,7 +848,7 @@ public:
 	bool	update_nodeterm(void);
 	int		backfill(const char* str, float pct, int full_attr, int empty_attr);
 	void	progress(const char* str, int count, int total, int interval = 500);
-	clock_t	last_progress = 0;
+	double	last_progress = 0;
 	bool	saveline(void);
 	bool	restoreline(void);
 	int		petscii_to_ansibbs(unsigned char);