Servo with limits enabled is still finding shortcuts

When I set limits enabled on a hinge in servo mode and use a pattern like LowerAngle = x and UpperAngle = -x, the servo tries to find shortcuts that pass through the limited region of its range. The servo also doesn’t stay within its range, instead the range it can move in appears inverted.

I would expect it to move by following the yellow line, but it actually tries to follow the red line, because it is shorter and gets stuck at the limit angles. Studio shows the range between the two limit angles along the red line in the image below as the range the servo can move in, but it actually moves between them along the yellow line, and takes shortcuts that pass through the red region, causing it to get stuck.