diff --git a/src/m_menu.c b/src/m_menu.c
index 3ebaedca27b6ed63bb044109f3383ad0d90789d2..6047bada962ba6a5f981e03ad2ad0cc1aa8a7137 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -5405,9 +5405,10 @@ static void M_HandleLevelPlatter(INT32 choice)
 		case KEY_LEFTARROW:
 			if (levellistmode == LLM_CREATESERVER && !lsrow)
 			{
+				INT32 startinggametype = cv_newgametype.value;
 				do
 					CV_AddValue(&cv_newgametype, -1);
-				while (!M_GametypeHasLevels(cv_newgametype.value));
+				while (cv_newgametype.value != startinggametype && !M_GametypeHasLevels(cv_newgametype.value));
 				S_StartSound(NULL,sfx_menu1);
 				lscol = 0;