I'm not insane - gyroscope swaps axes when the screen orientation is inverted when holding the phone upside down.
Swapped gyroscope axes for vertical screen orientation