From:             jaypedhskr at aol dot com
Operating system: Unix
PHP version:      4.2.3
PHP Bug Type:     Math related
Bug description:  Modulus returned negative value

Hi,

I had the following result from a PHP script, as seen from printing output
variables:

    -27 % 7 == -6

My understanding of the modulus function is that it returns the remainder
from division, and that the remainder can never be negative.

I believe that is the standard mathematical definition.

So I think what should have been returned is 1 instead of -6.

That is

  -27 = 7*(-4) + 1

instead of

  -27 = 7*(-3) -6

I got around this by adding the the modulus value if the result was less
than zero.  But I think a result of less than zero shouldn't occur.

Code snippet that ran into this:

      $T5 = $D + $T1 + $Y + $T2 + $T3 - $T4;
      $weekday = $T5 % 7;

Added code to handle this:
      if ($weekday < 0) {
          $weekday += 7;  // -27 % 7 = -6 case
      }

Specific problem case:
    $T5 = 3 + 2 + 3 + 5 + 0 - 40; // -27
    $weekday = %T5 % 7; // -27 % 7 = -6

Thanks!

-Jay Pedersen

-- 
Edit bug report at http://bugs.php.net/?id=22527&edit=1
-- 
Try a CVS snapshot:         http://bugs.php.net/fix.php?id=22527&r=trysnapshot
Fixed in CVS:               http://bugs.php.net/fix.php?id=22527&r=fixedcvs
Fixed in release:           http://bugs.php.net/fix.php?id=22527&r=alreadyfixed
Need backtrace:             http://bugs.php.net/fix.php?id=22527&r=needtrace
Try newer version:          http://bugs.php.net/fix.php?id=22527&r=oldversion
Not developer issue:        http://bugs.php.net/fix.php?id=22527&r=support
Expected behavior:          http://bugs.php.net/fix.php?id=22527&r=notwrong
Not enough info:            http://bugs.php.net/fix.php?id=22527&r=notenoughinfo
Submitted twice:            http://bugs.php.net/fix.php?id=22527&r=submittedtwice
register_globals:           http://bugs.php.net/fix.php?id=22527&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=22527&r=php3
Daylight Savings:           http://bugs.php.net/fix.php?id=22527&r=dst
IIS Stability:              http://bugs.php.net/fix.php?id=22527&r=isapi
Install GNU Sed:            http://bugs.php.net/fix.php?id=22527&r=gnused

Reply via email to