by Richard Russell, November 2011
BBC BASIC, in common with several other languages (e.g. C), provides only an integer MOD operator as standard. That is, you can pass non-integer values to MOD but they will be truncated to integers before the operation is carried out. For example:
PRINT 678.9 MOD 123.45
prints the value 63.
However the modulo operation is not fundamentally limited to integer values and occasionally it can be useful to have a version which will work with non-integers. In C this is provided by the fmod library function. An equivalent function in BBC BASIC can be implemented as follows:
DEF FNfmod(x,y) = x - x DIV y * y
Now we can perform the following operation:
PRINT FNfmod(678.9, 123.45)
and the value printed is 61.65.