diff --git a/src/k_kart.c b/src/k_kart.c
index f7cff5b061c392f7d527d86f538ce90975d539c9..c3c3840b5a62d19968daea567dd8e7eda6733b81 100644
--- a/src/k_kart.c
+++ b/src/k_kart.c
@@ -13630,15 +13630,28 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
 				const angle_t angledelta = FixedAngle(36*FRACUNIT);
 				angle_t baseangle = player->mo->angle + angledelta/2;
 
+				// Old ambiguous-input filter, no longer needed for 2.2 tricks
+				// INT16 aimingcompare = abs(cmd->throwdir) - abs(cmd->turning);
+
+				boolean cantrick = true;
 				UINT16 buttons = player->cmd.buttons;
-				INT16 aimingcompare = abs(cmd->throwdir) - abs(cmd->turning);
+				INT16 TRICKTHRESHOLD = 2*KART_FULLTURN/3;
+
+				// 2.3 - aimingcompare
+				if (!!G_CompatLevel(0x000C))
+				{
+					TRICKTHRESHOLD = KART_FULLTURN/2;
+					INT16 aimingcompare = abs(cmd->throwdir) - abs(cmd->turning);
+					if (abs(aimingcompare) < TRICKTHRESHOLD)
+						cantrick = false;
+				}
 
 				// 2.2 - Pre-steering trickpanels
 				if (!G_CompatLevel(0x000A) && !K_PlayerUsesBotMovement(player))
 				{
 					if (!(buttons & BT_ACCELERATE))
 					{
-						aimingcompare = 0;
+						cantrick = false;
 					}
 					// 2.3 - also allow tricking with the Spindash button
 					else if (!G_CompatLevel(0x000C) && ((buttons & BT_SPINDASHMASK) == BT_SPINDASHMASK))
@@ -13648,8 +13661,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
 				}
 
 				// Uses cmd->turning over steering intentionally.
-#define TRICKTHRESHOLD (KART_FULLTURN/2)
-				if (aimingcompare < -TRICKTHRESHOLD) // side trick
+				if (cantrick && abs(cmd->turning) > TRICKTHRESHOLD) // side trick
 				{
 					S_StartSoundAtVolume(player->mo, sfx_trick0, 255/2);
 					player->dotrickfx = true;
@@ -13688,7 +13700,7 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
 						P_SetPlayerMobjState(player->mo, S_KART_FAST_LOOK_R);
 					}
 				}
-				else if (aimingcompare > TRICKTHRESHOLD) // forward/back trick
+				else if (cantrick && abs(cmd->throwdir) > TRICKTHRESHOLD) // forward/back trick
 				{
 					S_StartSoundAtVolume(player->mo, sfx_trick0, 255/2);
 					player->dotrickfx = true;
@@ -13740,7 +13752,6 @@ void K_MoveKartPlayer(player_t *player, boolean onground)
 						P_SetPlayerMobjState(player->mo, S_KART_FAST);
 					}
 				}
-#undef TRICKTHRESHOLD
 
 				// Finalise everything.
 				if (player->trickpanel != TRICKSTATE_READY) // just changed from 1?