(-m) % n がマイナスの余りになるという仕様になっているのはなぜですか?
((-m) % n) + n とするのが面倒です。