diff --git a/src/sbbs3/readmsgs.cpp b/src/sbbs3/readmsgs.cpp
index 557cef035aaa882d6706289b824378b5d8e83d94..37742c9434e5ffacaf8700a7aef5f14e42f1454c 100644
--- a/src/sbbs3/readmsgs.cpp
+++ b/src/sbbs3/readmsgs.cpp
@@ -332,7 +332,7 @@ static int get_start_msg(sbbs_t* sbbs, smb_t* smb)
 /****************************************************************************/
 int sbbs_t::scanposts(uint subnum, long mode, char *find)
 {
-	char	str[256],str2[256],reread=0,mismatches=0
+	char	str[256],str2[256],do_find=true,mismatches=0
 			,done=0,domsg=1,HUGE16 *buf,*p;
 	char	find_buf[128];
 	char	tmp[128];
@@ -550,7 +550,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 
 		if(domsg && !(sys_status&SS_ABORT)) {
 
-			if(!reread && mode&SCAN_FIND) { 			/* Find text in messages */
+			if(do_find && mode&SCAN_FIND) { 			/* Find text in messages */
 				buf=smb_getmsgtxt(&smb,&msg,GETMSGTXT_TAILS);
 				if(!buf) {
 					if(smb.curmsg<smb.msgs-1) 
@@ -633,7 +633,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 		sprintf(str,"ABCDEFILMPQRTY?<>[]{}-+.,");
 		if(sub_op(subnum))
 			strcat(str,"O");
-		reread=0;
+		do_find=true;
 		l=getkeys(str,smb.msgs);
 		if(l&0x80000000L) {
 			if((long)l==-1) { /* ctrl-c */
@@ -646,14 +646,14 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 				return(1); 
 			}
 			smb.curmsg=(l&~0x80000000L)-1;
-			reread=1;
+			do_find=false;
 			continue; 
 		}
 		switch(l) {
 			case 'A':   
 			case 'R':   
 				if((char)l==(cfg.sys_misc&SM_RA_EMU ? 'A' : 'R')) { 
-					reread=1;	/* re-read last message */
+					do_find=false;	/* re-read last message */
 					break;
 				}
 				/* Reply to last message */
@@ -878,7 +878,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 				break;
 			case '-':
 				if(smb.curmsg>0) smb.curmsg--;
-				reread=1;
+				do_find=false;
 				break;
 			case 'O':   /* Operator commands */
 				while(online) {
@@ -989,6 +989,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 						break;
 				if(i<smb.msgs)
 					smb.curmsg=i;
+				do_find=false;
 				break;
 			case ',':   /* Thread backwards */
 				if(!msg.hdr.thread_orig) {
@@ -1000,6 +1001,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 						break;
 				if(i<smb.msgs)
 					smb.curmsg=i;
+				do_find=false;
 				break;
 			case '>':   /* Search Title forward */
 				for(i=smb.curmsg+1;i<smb.msgs;i++)
@@ -1009,6 +1011,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 					smb.curmsg=i;
 				else
 					domsg=0;
+				do_find=false;
 				break;
 			case '<':   /* Search Title backward */
 				for(i=smb.curmsg-1;i>-1;i--)
@@ -1018,6 +1021,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 					smb.curmsg=i;
 				else
 					domsg=0;
+				do_find=false;
 				break;
 			case '}':   /* Search Author forward */
 				strcpy(str,msg.from);
@@ -1028,6 +1032,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 					smb.curmsg=i;
 				else
 					domsg=0;
+				do_find=false;
 				break;
 			case '{':   /* Search Author backward */
 				strcpy(str,msg.from);
@@ -1038,6 +1043,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 					smb.curmsg=i;
 				else
 					domsg=0;
+				do_find=false;
 				break;
 			case ']':   /* Search To User forward */
 				strcpy(str,msg.to);
@@ -1048,6 +1054,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 					smb.curmsg=i;
 				else
 					domsg=0;
+				do_find=false;
 				break;
 			case '[':   /* Search To User backward */
 				strcpy(str,msg.to);
@@ -1058,6 +1065,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 					smb.curmsg=i;
 				else
 					domsg=0;
+				do_find=false;
 				break;
 			case 0: /* Carriage return - Next Message */
 			case '+':