This is at least documented in the manual ( http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html ):
  > Note that x mod y is negative only if x < 0.

I suppose the idea was to make the least surprising choice (assuming people knew , and also have the behavior coincide with mod_float. (Interestingly, the IEEE754 norm requires a "remainder" operation that has an even stranger behavior (modulo is defined from the round-to-nearest division) and I haven't proposed anywhere.)

On Sun, Jan 18, 2015 at 7:48 PM, Hannes Mehnert <hannes@mehnert.org> wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA384

Hi,

is the behaviour of modulo arithmetics intentional:
 -5 mod 4 = -1 ?

While this reflects the C behaviour, my expectation was to always have
a positive result:
 -5 mod 4 = 3

Any hints?

hannes
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCQAGBQJUu//3AAoJELyJZYjffCjuQH0QAL7FTKcguf2mKMVm1wu+jYvv
b5yOBl+X0vMBCNWjpMfYVf1nIfo+z5cNF+1zy1kHaozE2BV10qywzWe+mzq+1VMo
g1knplZbxahdTgf1Ix+BqF+Fk0voFfUTW/l9Zrg07B5wUEOFcFXKNo14eWSatTs0
tVtSAk6fTffz7IPU/QJfvi7euQ5q6e5MVyvoorpjIz2j/OJ0QXw+catlSPXWdyeW
/2TmdeX6WZuiSruEBAvDgDi8Qcp9x/q1abAjdnrZgfmY3+MxNrFZ+7M+QD+mUua6
pgOe2xdb2gRr5/pOqMLxGpfWZ8b695TS31jZj0GJOZ4sgX/Az/eq1wHSyXiGDpWP
dTr/GUPJWNUEWNeqrF88sOPJK4Zjqr19v7NX86wxvwfQGM4qCbEuYvkVQwBOhtgn
/ewgArQNVHyeAH7R8Ze0S5nqVGDRyJwDj3ef4EVvLGLuibs/fI72x4SQ2x2Xfoz7
tgkkb0g1So15iVo1z3FDbTbeJBaZh/0lyqBno7w4FmJkoc4Ool9DarKaBe+SqHqP
ErYMK+bA9P7e+rBqySnB92dsClg17v2lmzGuKd4damcaAJvsscOJXWbLvteQbxo5
eL8TG2sHCdOV5H4dJCpudUzVkA5dYnJUZuSVG/JAyyZWYm/kkQX0obJJo49GMH4h
MvZ9C+veJNgwRY540fqj
=s3KW
-----END PGP SIGNATURE-----

--
Caml-list mailing list.  Subscription management and archives:
https://sympa.inria.fr/sympa/arc/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs