This wasn’t what I thought it would be:
In GMLive, I form a ds_map for switch-cases that have a constant (number, string) expression for a value for faster lookup.
However, point_direction(0, 0, 1, 0) isn’t 0. It’s -0, which is technically a different value:

I’ll think of what to do with this, but using floor, round, or int64(dir) will indeed work for a workaround - it’s pretty hard to get a -0 outside of math functions.