負数に対する % が処理系定義なのは C++ (ISO/IEC 14882:1999, 5.6).

C だと div と /, % の同値性を ISO/IEC 9899:1998, 7.20.6.2 で保証し,
Rationale 6.5.5, 7.20.6.2 によって「Fortranと同じように動作せよ」としてる.
ただし Fortran と同じとは sign(a % b) == sign(a).