Third Person Character Controller gets stuck looking left

Hello, I’m having a little issue with the Third Person Controller that comes with Unity. When my character is facing left I often get pulled back to facing left after moving. Example gif https://i.gyazo.com/2751c248c4e078fb4338bcb67234e017.gif.

Anyone happen to know why it does this?

public void Move(Vector3 move, bool crouch, bool jump)
		{

			// convert the world relative moveInput vector into a local-relative
			// turn amount and forward amount required to head in the desired
			// direction.
			if (move.magnitude > 1f) move.Normalize();
			move = transform.InverseTransformDirection(move);
			CheckGroundStatus();
			move = Vector3.ProjectOnPlane(move, m_GroundNormal);
			m_TurnAmount = Mathf.Atan2(move.x, move.z);
			m_ForwardAmount = move.z;

			ApplyExtraTurnRotation();

			// control and velocity handling is different when grounded and airborne:
			if (m_IsGrounded)
			{
				HandleGroundedMovement(crouch, jump);
			}
			else
			{
				HandleAirborneMovement();
			}

			ScaleCapsuleForCrouching(crouch);
			PreventStandingInLowHeadroom();

			// send input and other state parameters to the animator
			UpdateAnimator(move);
		}

void ApplyExtraTurnRotation()
		{
			// help the character turn faster (this is in addition to root rotation in the animation)
			float turnSpeed = Mathf.Lerp(m_StationaryTurnSpeed, m_MovingTurnSpeed, m_ForwardAmount);
			transform.Rotate(0, m_TurnAmount * turnSpeed * Time.deltaTime, 0);
		}

I just experienced the same thing, with my little doggy.

I’m not 100% sure, as I’m not gifted at maths.

It appears to be something to do with the aTan2 calculation - it returns PI at x=0,z=0, and that causes the self-rotation, slowly edging the W component of the rotation quaternion.

But I solved it by not reacting to that situation:

if( move.x!=0 || move.z !=0 ) 
	ApplyExtraTurnRotation();