diff --git a/source/sw/src/input.cpp b/source/sw/src/input.cpp
index d3ecd25de..21c898192 100644
--- a/source/sw/src/input.cpp
+++ b/source/sw/src/input.cpp
@@ -278,9 +278,9 @@ static void processMovement(PLAYERp const pp, ControlInfo* const hidInput, bool
     if (!cl_syncinput)
     {
         if (TEST(pp->Flags2, PF2_INPUT_CAN_TURN))
-            DoPlayerTurn(pp, !TEST(pp->Flags, PF_DEAD) || TEST(pp->Flags, PF_DEAD) && TEST(pp->Flags, PF_DEAD_HEAD|PF_HEAD_CONTROL) ? q16avel : 0, scaleAdjust);
+            DoPlayerTurn(pp, q16avel, scaleAdjust);
         if (TEST(pp->Flags2, PF2_INPUT_CAN_AIM))
-            DoPlayerHorizon(pp, !TEST(pp->Flags, PF_DEAD) ? q16horz : 0, scaleAdjust);
+            DoPlayerHorizon(pp, q16horz, scaleAdjust);
     }
 
     loc.fvel = clamp(loc.fvel + fvel, -MAXFVEL, MAXFVEL);
diff --git a/source/sw/src/player.cpp b/source/sw/src/player.cpp
index 4a83201d1..445393749 100644
--- a/source/sw/src/player.cpp
+++ b/source/sw/src/player.cpp
@@ -1551,63 +1551,66 @@ DoPlayerCrawlHeight(PLAYERp pp)
 void
 DoPlayerTurn(PLAYERp pp, fixed_t const q16avel, double const scaleAdjust)
 {
-    if (!TEST(pp->Flags, PF_TURN_180))
+    if (!TEST(pp->Flags, PF_DEAD) || TEST(pp->Flags, PF_DEAD) && TEST(pp->Flags, PF_DEAD_HEAD|PF_HEAD_CONTROL))
     {
-        if (pp->input.actions & SB_TURNAROUND)
+        if (!TEST(pp->Flags, PF_TURN_180))
         {
-            if (pp->KeyPressBits & SB_TURNAROUND)
+            if (pp->input.actions & SB_TURNAROUND)
             {
-                fixed_t delta_ang;
+                if (pp->KeyPressBits & SB_TURNAROUND)
+                {
+                    fixed_t delta_ang;
 
-                pp->KeyPressBits &= ~SB_TURNAROUND;
+                    pp->KeyPressBits &= ~SB_TURNAROUND;
 
-                pp->turn180_target = pp->q16ang + IntToFixed(1024);
+                    pp->turn180_target = pp->q16ang + IntToFixed(1024);
 
-                // make the first turn in the clockwise direction
-                // the rest will follow
-                delta_ang = labs(GetDeltaQ16Angle(pp->turn180_target, pp->q16ang)) >> TURN_SHIFT;
-                pp->q16ang = (pp->q16ang + xs_CRoundToInt(scaleAdjust * delta_ang)) & 0x7FFFFFF;
+                    // make the first turn in the clockwise direction
+                    // the rest will follow
+                    delta_ang = labs(GetDeltaQ16Angle(pp->turn180_target, pp->q16ang)) >> TURN_SHIFT;
+                    pp->q16ang = (pp->q16ang + xs_CRoundToInt(scaleAdjust * delta_ang)) & 0x7FFFFFF;
 
-                SET(pp->Flags, PF_TURN_180);
+                    SET(pp->Flags, PF_TURN_180);
+                }
+            }
+            else
+            {
+                pp->KeyPressBits |= SB_TURNAROUND;
             }
         }
-        else
+
+        if (TEST(pp->Flags, PF_TURN_180))
         {
-            pp->KeyPressBits |= SB_TURNAROUND;
-        }
-    }
+            fixed_t delta_ang;
 
-    if (TEST(pp->Flags, PF_TURN_180))
-    {
-        fixed_t delta_ang;
+            delta_ang = GetDeltaQ16Angle(pp->turn180_target, pp->q16ang) >> TURN_SHIFT;
+            pp->q16ang = (pp->q16ang + xs_CRoundToInt(scaleAdjust * delta_ang)) & 0x7FFFFFF;
 
-        delta_ang = GetDeltaQ16Angle(pp->turn180_target, pp->q16ang) >> TURN_SHIFT;
-        pp->q16ang = (pp->q16ang + xs_CRoundToInt(scaleAdjust * delta_ang)) & 0x7FFFFFF;
+            sprite[pp->PlayerSprite].ang = FixedToInt(pp->q16ang);
 
-        sprite[pp->PlayerSprite].ang = FixedToInt(pp->q16ang);
+            if (!Prediction && pp->PlayerUnderSprite >= 0)
+            {
+                sprite[pp->PlayerUnderSprite].ang = FixedToInt(pp->q16ang);
+            }
 
-        if (!Prediction && pp->PlayerUnderSprite >= 0)
-        {
-            sprite[pp->PlayerUnderSprite].ang = FixedToInt(pp->q16ang);
+            // get new delta to see how close we are
+            delta_ang = GetDeltaQ16Angle(pp->turn180_target, pp->q16ang);
+
+            if (labs(delta_ang) < (IntToFixed(3) << TURN_SHIFT))
+            {
+                pp->q16ang = pp->turn180_target;
+                RESET(pp->Flags, PF_TURN_180);
+            }
+            else
+            {
+                return;
+            }
         }
 
-        // get new delta to see how close we are
-        delta_ang = GetDeltaQ16Angle(pp->turn180_target, pp->q16ang);
-
-        if (labs(delta_ang) < (IntToFixed(3) << TURN_SHIFT))
+        if (q16avel != 0)
         {
-            pp->q16ang = pp->turn180_target;
-            RESET(pp->Flags, PF_TURN_180);
+            pp->q16ang = (pp->q16ang + q16avel) & 0x7FFFFFF;
         }
-        else
-        {
-            return;
-        }
-    }
-
-    if (q16avel != 0)
-    {
-        pp->q16ang = (pp->q16ang + q16avel) & 0x7FFFFFF;
     }
 
     if (!cl_syncinput && pp->angAdjust)
@@ -1859,67 +1862,70 @@ PlayerAutoLook(PLAYERp pp, double const scaleAdjust)
 void
 DoPlayerHorizon(PLAYERp pp, fixed_t const q16horz, double const scaleAdjust)
 {
-    // Fixme: This should probably be made optional.
-    if (cl_slopetilting)
-        PlayerAutoLook(pp, scaleAdjust);
-
-    if (q16horz)
+    if (!TEST(pp->Flags, PF_DEAD))
     {
-        pp->q16horizbase += q16horz;
-        SET(pp->Flags, PF_LOCK_HORIZ | PF_LOOKING);
-    }
+        // Fixme: This should probably be made optional.
+        if (cl_slopetilting)
+            PlayerAutoLook(pp, scaleAdjust);
 
-    // this is the locked type
-    if (pp->input.actions & (SB_AIM_UP|SB_AIM_DOWN))
-    {
-        // set looking because player is manually looking.
-        SET(pp->Flags, PF_LOCK_HORIZ | PF_LOOKING);
-
-        // adjust q16horiz negative
-        if (pp->input.actions & SB_AIM_DOWN)
-            pp->q16horizbase -= FloatToFixed(scaleAdjust * (HORIZ_SPEED >> 1));
-
-        // adjust q16horiz positive
-        if (pp->input.actions & SB_AIM_UP)
-            pp->q16horizbase += FloatToFixed(scaleAdjust * (HORIZ_SPEED >> 1));
-    }
-
-    // this is the unlocked type
-    if (pp->input.actions & (SB_LOOK_UP|SB_LOOK_DOWN|SB_CENTERVIEW))
-    {
-        RESET(pp->Flags, PF_LOCK_HORIZ);
-        SET(pp->Flags, PF_LOOKING);
-
-        // adjust q16horiz negative
-        if (pp->input.actions & SB_LOOK_DOWN)
-            pp->q16horizbase -= FloatToFixed(scaleAdjust * HORIZ_SPEED);
-
-        // adjust q16horiz positive
-        if (pp->input.actions & SB_LOOK_UP)
-            pp->q16horizbase += FloatToFixed(scaleAdjust * HORIZ_SPEED);
-
-        if (pp->input.actions & SB_CENTERVIEW)
-            pp->q16horizoff = 0;
-    }
-
-    if (!TEST(pp->Flags, PF_LOCK_HORIZ))
-    {
-        if (!(pp->input.actions & (SB_LOOK_UP|SB_LOOK_DOWN)))
+        if (q16horz)
         {
-            // not pressing the q16horiz keys
-            if (pp->q16horizbase != IntToFixed(100))
+            pp->q16horizbase += q16horz;
+            SET(pp->Flags, PF_LOCK_HORIZ | PF_LOOKING);
+        }
+
+        // this is the locked type
+        if (pp->input.actions & (SB_AIM_UP|SB_AIM_DOWN))
+        {
+            // set looking because player is manually looking.
+            SET(pp->Flags, PF_LOCK_HORIZ | PF_LOOKING);
+
+            // adjust q16horiz negative
+            if (pp->input.actions & SB_AIM_DOWN)
+                pp->q16horizbase -= FloatToFixed(scaleAdjust * (HORIZ_SPEED >> 1));
+
+            // adjust q16horiz positive
+            if (pp->input.actions & SB_AIM_UP)
+                pp->q16horizbase += FloatToFixed(scaleAdjust * (HORIZ_SPEED >> 1));
+        }
+
+        // this is the unlocked type
+        if (pp->input.actions & (SB_LOOK_UP|SB_LOOK_DOWN|SB_CENTERVIEW))
+        {
+            RESET(pp->Flags, PF_LOCK_HORIZ);
+            SET(pp->Flags, PF_LOOKING);
+
+            // adjust q16horiz negative
+            if (pp->input.actions & SB_LOOK_DOWN)
+                pp->q16horizbase -= FloatToFixed(scaleAdjust * HORIZ_SPEED);
+
+            // adjust q16horiz positive
+            if (pp->input.actions & SB_LOOK_UP)
+                pp->q16horizbase += FloatToFixed(scaleAdjust * HORIZ_SPEED);
+
+            if (pp->input.actions & SB_CENTERVIEW)
+                pp->q16horizoff = 0;
+        }
+
+        if (!TEST(pp->Flags, PF_LOCK_HORIZ))
+        {
+            if (!(pp->input.actions & (SB_LOOK_UP|SB_LOOK_DOWN)))
             {
-                // move q16horiz back to 100
-                for (int i = 1; i; i--)
+                // not pressing the q16horiz keys
+                if (pp->q16horizbase != IntToFixed(100))
                 {
-                    // this formula does not work for q16horiz = 101-103
-                    pp->q16horizbase += xs_CRoundToInt(scaleAdjust * (IntToFixed(25) - (pp->q16horizbase >> 2)));
+                    // move q16horiz back to 100
+                    for (int i = 1; i; i--)
+                    {
+                        // this formula does not work for q16horiz = 101-103
+                        pp->q16horizbase += xs_CRoundToInt(scaleAdjust * (IntToFixed(25) - (pp->q16horizbase >> 2)));
+                    }
+                }
+                else
+                {
+                    // not looking anymore because q16horiz is back at 100
+                    RESET(pp->Flags, PF_LOOKING);
                 }
-            }
-            else
-            {
-                // not looking anymore because q16horiz is back at 100
-                RESET(pp->Flags, PF_LOOKING);
             }
         }
     }