Incorrect results of logical connective for Implication

LIBRARY "HEXLIB.TRC"
DECLARE DEF And, Or

FUNCTION Imp( a, b)
! This is done numerically for speed instead of chugging into bit-string manipulation
! which does work correctly, but with much more code.
!
LET p = a
LET q = b
!
! LET Imp = - 1 * ( And( p, ( - 1 * q))) ! that is, not( p and ( not q))
! LET Imp = Nor( Nor( Nor( p, p), q), Nor( Nor( p, p), q))
! LET Imp = - 1 * Nor( ( -1 * p), q)
!
LET Imp = Or( -1 * p, q) ! that is, ( not p) or q ! = -1 * a + b - And( -1 * a, b)
!
END FUNCTION ! Imp( a, b)

! ******** Begin mainline processing here

FOR i = 1 TO 16
FOR v = 0 TO 15
PRINT i - 1; v ; 16 + Imp( i, v)
NEXT v
GET KEY z
NEXT i
PRINT "Mainline done."
GET KEY z
STOP

! ****** End mainline processing here

! End statement here
!
END

1. The problem is that the results are correct above, but the i index should not have to be decremented in the output for the bit-arithmetic to work.

2. An unrelated suggestion is to make the entire TrueBASIC website with a white background (easier on eyes) than this difficult white on gray typing.

3. The poster should not be obligated to program html code to reflect the block structure format of the quoted TrueBASIC program. In fact, I inserted the code tags which obviously did not work.