diff --git a/src/command.c b/src/command.c
index ba0095e079b4a6be92a0e9983217d9e6432325fa..fda17847b7dc631f97039368e3d9a95cef17aa73 100644
--- a/src/command.c
+++ b/src/command.c
@@ -514,7 +514,6 @@ static void COM_ExecuteString(char *ptext)
 	{
 		if (!stricmp(com_argv[0], cmd->name)) //case insensitive now that we have lower and uppercase!
 		{
-			recursion = 0;
 			cmd->function();
 			return;
 		}
@@ -526,19 +525,17 @@ static void COM_ExecuteString(char *ptext)
 		if (!stricmp(com_argv[0], a->name))
 		{
 			if (recursion > MAX_ALIAS_RECURSION)
-			{
 				CONS_Alert(CONS_WARNING, M_GetText("Alias recursion cycle detected!\n"));
-				recursion = 0;
-				return;
+			else
+			{ // Monster Iestyn: keep track of how many levels of recursion we're in
+				recursion++;
+				COM_BufInsertText(a->value);
+				recursion--;
 			}
-			recursion++;
-			COM_BufInsertText(a->value);
 			return;
 		}
 	}
 
-	recursion = 0;
-
 	// check cvars
 	// Hurdler: added at Ebola's request ;)
 	// (don't flood the console in software mode with bad gr_xxx command)