diff --git a/src/sbbs3/logon.cpp b/src/sbbs3/logon.cpp
index 17991b9107b2add048ff604b15540b1a9e2a108c..5ddc5add8a992440801215c92720bc732cdb730a 100644
--- a/src/sbbs3/logon.cpp
+++ b/src/sbbs3/logon.cpp
@@ -162,10 +162,11 @@ bool sbbs_t::logon()
 		} 
 	}
 
-	if(((useron.misc & (AUTOTERM | PETSCII)) == PETSCII) && (autoterm & ANSI)) {
+	if((useron.misc & AUTOTERM)
 		// User manually-enabled PETSCII, but they're logging in with an ANSI (auto-detected) terminal
-		useron.misc &= ~PETSCII;
-		useron.misc |= AUTOTERM;
+		|| ((useron.misc & PETSCII) && (autoterm & ANSI))) {
+		useron.misc &= ~(ANSI|RIP|CHARSET_FLAGS);
+		useron.misc |= (AUTOTERM | autoterm);
 	}
 
 	if(!chk_ar(cfg.shell[useron.shell]->ar,&useron,&client)) {