Nur eine Vermutung: Der data type von Modulo ist Long. Es könnte sein, dass der für Zwischenschritte verwendet wird - und dabei wird er von Deiner Zahl "gesprengt".
Ich denke, man sollte (in allen Programmiersprachen) immer den "kleinsten gemeinsamen Nenner" (hier besser: Das schwächste Glied der Rechen-Kette) berücksichtigen.
Bernhard