Paul Tillotson <pntil@shentel.net> writes:
> I don't think anyone wants to defend the negative modulus as such, but to fix it, we have to do one of these:
> (1) Keep rounding division, but rewrite the numeric modulus operator to use a form of division that always rounds
towardszero.
> or
> (2) Give up rounding division in favor of truncating towards zero.
or (3) increase the calculation precision (rscale), as suggested by
Alvaro's message.
Possibly that cannot work, but I haven't seen a proof.
> It looks like the "bug" can be easily fixed by changing the end of div_var where it says
> round_var(result, rscale);
> to
> trunc_var(result, scale);
I cannot believe that that won't create problems at least as bad as it
solves. Have you even tried the regression tests on this?
regards, tom lane