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 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 >