• Tom Lane's avatar
    Fix j2day() to behave sanely for negative Julian dates. · 5db51464
    Tom Lane authored
    Somebody had apparently once figured that casting to unsigned int would
    produce the right output for negative inputs, but that would only be
    true if 2^32 were a multiple of 7, which of course it ain't.  We need
    to use a signed division and then correct the sign of the remainder.
    
    AFAICT, the only case where this would arise currently is when doing
    ISO-week calculations for dates in 4714BC, where we'd compute a
    negative Julian date representing 4714-01-04BC and then do some
    arithmetic with it.  Since we don't even really document support for
    such dates, this is not of much consequence.  But we may as well
    get it right.
    
    Per report from Vitaly Burovoy.
    5db51464
datetime.c 122 KB