Dans la doc, y disent que si un entier dépasse la valeur maxi : "La taille des entiers dépend de la plate-forme de support, mais la valeur maximale est généralement de 2 milliards et des poussières (c'est un entier signé de 32 bits)" il est automatiquement casté en float.
C'est ce qui doit donc se passer, mais alors la, gaffe à la perte de précision ! Une erreur qui est peut-être minime sur une division peut devenir n'importe quoi sur un modulo !
Je connais pas leur algo pour le modulo, mais c'est sûr qu'il merde pour les grand nombre, surement a cause de la perte de précision.
essaye :
$Nombre = 12345678901; // grand nombre divisé par 97
$div = $nombre / 97; // $div = résultat de la division
$frac = $div - floor( $div ); // $frac = partie après la virgule
$mod = ceil($frac * 97); // Modulo !
Dans cet exemple, le modulo trouvé est 21, ce que la calculatrice de windows confirme !
Sinon, pour manipuler des grand nombres, y'a des libs spécialisés : http://www.php.net/manual/fr/ref.bc.php
---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.