diff --git a/src/sbbs3/qwk.cpp b/src/sbbs3/qwk.cpp
index 6360410d7945b52a4b7f618b974565f375a1fdcb..e7f151ce65028a8c0778c1fd6f36a9529aa2c5d3 100644
--- a/src/sbbs3/qwk.cpp
+++ b/src/sbbs3/qwk.cpp
@@ -965,3 +965,18 @@ void sbbs_t::qwkcfgline(char *buf,uint subnum)
 }
 
 
+int sbbs_t::set_qwk_flag(ulong flag)
+{
+	int i;
+	char str[32];
+
+	if((i=getuserrec(&cfg,useron.number,U_QWK,8,str))!=0)
+		return(i);
+	useron.qwk=ahtoul(str);
+	useron.qwk|=flag;
+	if((i=putuserrec(&cfg,useron.number,U_QWK,8,ultoa(useron.qwk,str,16)))!=0)
+		return(i);
+
+	return(0);
+}
+
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index e7a63066a3ce320f6de794b2de9022ee93ebfa62..6016fc6874bb960e5bce8f722bf368c7dd4c6156 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -654,6 +654,7 @@ public:
 	void	qwk_success(ulong msgcnt, char bi, char prepack);
 	void	qwksetptr(uint subnum, char *buf, int reset);
 	void	qwkcfgline(char *buf,uint subnum);
+	int		set_qwk_flag(ulong flag);
 
 	/* pack_qwk.cpp */
 	bool	pack_qwk(char *packet, ulong *msgcnt, bool prepack);