Martyn, Integer division for negative numbers is not very well defined. Language designers get to choose if their language will round towards zero, negative infinity, or positive infinity when doing integer division. Different languages have made different choices. S*Basic designers have chosen to use the "flooring" approach (round the floating point result to the next smaller number).
Some other reasoning: -1 / 2 should be? (1) -1/2 = 0 remainder -1 (2)$FFFF ASR 1 = $FFFF = -1 Another note: The original QL allowed word-size divisors and dividends. while SMSQ/E extended this to long integers. And the original QL manual even had an example illustrating what you see here: -5 DIV 2 { will output -3} Tobias > Am 05.01.2017 um 16:27 schrieb Martyn Hill <martyn.joseph.h...@gmail.com>: > > Hi everyone > > Can anyone tell me the expected behaviour for the integer-divide operator > 'DIV' in SBASIC, when provided with a negative dividend/numerator? > > My number-theory is a bit rusty, but I would have thought that, say, -1 DIV > 10 should result in 0 (with remainder/MOD of -1). > > Instead, on QPC2/SBASIC, I get the result -1 for that example - and (almost) > always 1 less than expected for negative dividends, thus: > > 12 DIV 10 = 1 > 11 DIV 10 = 1 > 10 DIV 10 = 1 > 9 DIV 10 = 0 > ... > 2 DIV 10 = 0 > 1 DIV 10 = 0 > 0 DIV 10 = 0 > * -1 DIV 10 = -1 - expected '0'** > ** -2 DIV 10 = -1** > **...** > ** -9 DIV 10 = -1* > *-10 DIV 10 = -1 - as expected* > *-11 DIV 10 = -2 - expected '-1' > -12 DIV 10 = -2 > > *etc... > > Thanks in advance! > > Martyn. > _______________________________________________ > QL-Users Mailing List _______________________________________________ QL-Users Mailing List