diff --git a/src/g_game.c b/src/g_game.c
index a76d4770ec6135e85da6aefdd01f3d197c11c505..9b6a78fef002dbdddb7bd2485e50be66f9f708fb 100644
--- a/src/g_game.c
+++ b/src/g_game.c
@@ -3519,21 +3519,14 @@ UINT8 G_SometimesGetDifferentGametype(UINT8 prefgametype)
 	if (!cv_kartvoterulechanges.value) // never
 		return (gametype|encoremodifier);
 
-	if (randmapbuffer[NUMMAPS] > 0 && (encorepossible || cv_kartvoterulechanges.value != 3))
+	if (randmapbuffer[NUMMAPS] > 0 && (cv_kartvoterulechanges.value != 3)) // used to be (encorepossible || rule changes != 3)
 	{
 		randmapbuffer[NUMMAPS]--;
-		if (cv_kartvoterulechanges.value == 3) // always
-		{
-			randmapbuffer[NUMMAPS] = 0; // gotta prep this in case it isn't already set
-		}
 		return (gametype|encoremodifier);
 	}
 
 	switch (cv_kartvoterulechanges.value) // okay, we're having a gametype change! when's the next one, luv?
 	{
-		case 3: // always
-			randmapbuffer[NUMMAPS] = 1; // every other vote (or always if !encorepossible)
-			break;
 		case 1: // sometimes
 			randmapbuffer[NUMMAPS] = 5; // per "cup"
 			break;
@@ -3545,10 +3538,15 @@ UINT8 G_SometimesGetDifferentGametype(UINT8 prefgametype)
 	}
 
 	// Only this response is prefgametype-based.
-	// Also intentionally does not use encoremodifier!
 	if (prefgametype == GT_MATCH)
+	{
+		// Intentionally does not use encoremodifier!
+		if (cv_kartencore.value)
+			return (GT_RACE|0x80);
 		return (GT_RACE);
-	return (GT_MATCH);
+	}
+	// This might appear wrong HERE, but the game will display the Encore possibility on the second voting choice instead.
+	return (GT_MATCH|encoremodifier);
 }
 
 //