I still can't get over this from a few months ago. I recently re-discovered the problem and looked more into it, but it turns out it's not really GML's fault;
GML:
(-120) mod 360 == -120
Python:
(-120) % 360 == 240
Wolfram Alpha:
(-120) % 360 == 240
Google:
(-120) % 360 == 240
So, the answer I was looking for is definitely 240, because I was working with angles, and negatives would break lots of things. However, that's also what I expected to be the proper implementation of modulo.
I had been laughing at GML for the incorrect implementation of modulo, but to my suprise I recently discovered Java does the same thing as well!
Java:
(-120) % 360 == -120
Curious.
As it turns out, the implementation of modulo isn't exactly universally accepted.
http://en.wikipedia.org/wiki/Modulo_operation#Common_pitfallswat.
Anyway, I wrote my own modulus for the time being.
return argument0 - argument1 * floor(argument0 / argument1);