anchor.diff:  ;;; Order is FROM/UPFROM BY TO/UPTO.
   (define-parser arithmetic-up-2-parser
     (consecutive (lambda (var type-spec from form1 by form2 to form3)
  -		 (declare (ignore from to by))
  +		 (declare (ignore from by))
   		 (let ((to-var (gensym))
   		       (by-var (gensym)))
   		   (make-instance 'for-as-arithmetic
   		     :bindings `((,var ,form1)
   				 (,by-var ,form2)
   				 (,to-var ,form3))
  -		     :termination `(when (> ,var ,to-var) (go end))
  -		     :step `(incf ,var ,by-var))))
  -	       (singleton #'identity
  -			  (lambda (x) (and (symbolp x) (not (constantp x)))))
  -	       'type-spec-parser
  -	       (alternative (keyword-parser 'from)
  -			    (keyword-parser 'upfrom))
  -	       (singleton #'identity (constantly t))
  -	       (keyword-parser 'by)
  -	       (singleton #'identity (constantly t))
  -	       (alternative (keyword-parser 'to)
  -			    (keyword-parser 'upto))
  +		     :termination
  +		     `(when (,(if (eq to 'below) '>= '>) ,var ,to-var)
  +			(go end))
  +		     :step `(incf ,var ,by-var))))
  +	       (singleton #'identity
  +			  (lambda (x) (and (symbolp x) (not (constantp x)))))
  +	       'type-spec-parser
  +	       (alternative (keyword-parser 'from)
  +			    (keyword-parser 'upfrom))
  +	       (singleton #'identity (constantly t))
  +	       (keyword-parser 'by)
  +	       (singleton #'identity (constantly t))
  +	       (alternative (keyword-parser 'to)
  +			    (keyword-parser 'upto)
  +			    (keyword-parser 'below))
   	       (singleton #'identity (constantly t))))
   
   ;;; Order is TO/UPTO FROM/UPFROM BY.
   (define-parser arithmetic-up-3-parser
     (consecutive (lambda (var type-spec to form1 from form2 by form3)
  -		 (declare (ignore from to by))
  +		 (declare (ignore from by))
   		 (let ((to-var (gensym))
   		       (by-var (gensym)))
   		   (make-instance 'for-as-arithmetic
   		     :bindings `((,to-var ,form1)
   				 (,var ,form2)
   				 (,by-var ,form3))
  -		     :termination `(when (> ,var ,to-var) (go end))
  -		     :step `(incf ,var ,by-var))))
  -	       (singleton #'identity
  -			  (lambda (x) (and (symbolp x) (not (constantp x)))))
  -	       'type-spec-parser
  -	       (alternative (keyword-parser 'to)
  -			    (keyword-parser 'upto))
  +		     :termination
  +		     `(when (,(if (eq to 'below) '>= '>) ,var ,to-var)
  +			(go end))
  +		     :step `(incf ,var ,by-var))))
  +	       (singleton #'identity
  +			  (lambda (x) (and (symbolp x) (not (constantp x)))))
  +	       'type-spec-parser
  +	       (alternative (keyword-parser 'to)
  +			    (keyword-parser 'upto)
  +			    (keyword-parser 'below))
   	       (singleton #'identity (constantly t))
   	       (alternative (keyword-parser 'from)
   			    (keyword-parser 'upfrom))
  
positive.code: 
  (define-parser arithmetic-up-13-parser
    (consecutive (lambda (var type-spec to form1)
  		 (declare (ignore from to by))
  		 (let ((to-var (gensym)))
  		   (make-instance 'for-as-arithmetic
  		     :bindings `((,var ,0)
  				 (,to-var,form1))
  		     :termination `(when (> ,var ,to-var) (go end))
  		     :step `(incf ,var))))
  	       (singleton #'identity
  			  (lambda (x) (and (symbolp x) (not (constantp x)))))
  	       'type-spec-parser
  	       (alternative (keyword-parser 'to)
  			    (keyword-parser 'upto))
  	       (singleton #'identity (constantly t))))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
negative.code: 	       (keyword-parser 'by)
  	       (singleton #'identity (constantly t))
  	       (alternative (keyword-parser 'to)
  			    (keyword-parser 'upto)
  			    (keyword-parser 'below))
  	       (singleton #'identity (constantly t))))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  