This code doesn't account for quaternions having 2 representations for the same rotation.
So sometimes it will find a big angle between quaternions when a much smaller angle is the logical choice.
// Update angular data in the same fashion
var rotationOffset = newRotation * Quaternion.Inverse(m_LastRotation);
float currentAngle;
var activeAxis = Vector3.zero;
rotationOffset.ToAngleAxis(out currentAngle, out activeAxis);
I've fixed this in my code by fixing the input into the Update() method. But I guess it should be something PhysicsTracker does internally.