Shouldn't you really make the Z, X and Y coords different TYPES? Seems to me you make a lot of typos with those coordinates. If Typing structs keeps you from making errors, then why not be consistent?
You make a LOT more of that kind of typos than you do mixing up actual TYPE definitions. And, after all, there is nothing even remotely similar between an X and an Z coordinate. They are not even in the same dimention ffs.
They would definitely be different types!!
I feel this would help you all a lot :D