It works for me in 3.0.19 (Ubuntu) and 3.5.10 (Mac). Can you upgrade to 3.5.10 and see if that helps?
The two pairs of tests are not identical; one uses localvar arguments (@fmod var1 var2), the other uses constant arguments (@fmod M_N0 M_1). I do that a lot, since Quixe sometimes optimizes constant arguments and I want to test both code paths.
ZMPP now passes all float tests as well. Somehow the glulxercise version in the glk-dev repository (100811) shows 8 errors (which are sign-related and glulxe reports them as well), but the one in quixe (100816) shows zero for glulxe and ZMPP (I might as well have made a mistake in pulling, I took it from the float branch).
It occurs to me that it’d be nice if the opcode numbers were listed with the descriptions of the opcodes, instead of (or in addition to) in a separate table.