[next] [previous] [contents]
DECLARE REAL FUNCTION mdlo (REAL, INTEGER)
DEF mdlo( REAL argument, INTEGER modulus )
!Check for argument equal to zero
EXIT DEF IF argument = 0
!Check for modulus equal to zero, modulus equal to absolute
!value of argument, and modulus greater than absolute
!value of argument.
SELECT modulus
CASE = 0%
EXIT DEF
CASE > ABS( argument )
EXIT DEF
CASE = ABS( argument )
mdlo = argument
EXIT DEF
END SELECT
!If argument is negative, set flag negative% and set argument
!to its absolute value.
IF argument < 0
THEN argument = ABS( argument )
negative% = -1%
END IF
UNTIL argument < modulus
argument = argument - modulus
!If this calculation ever results in zero, mdlo returns zero
IF argument = modulus
THEN mdlo = 0
EXIT DEF
END IF
NEXT
!Argument now contains the right number, but the sign may be wrong.
!If the negative argument flag was set, make the result negative.
IF negative%
THEN mdlo = - argument
ELSE mdlo = argument
END IF
END DEF
INPUT "PLEASE INPUT THE VALUE AND THE MODULUS"; X,Y
PRINT mdlo(X,Y)
END