anchor.diff:                 (next? (term)
                    (eq (next) term))
                  (err (expected got)
  -                 (error "PS-LOOP expected ~s, got ~s." expected got))
  +                 (error "PS-LOOP expected ~a, got ~a." expected got))
                  (consume (&optional what)
                    (let ((term (pop terms)))
                      (when (and what (not (eq what term)))
  
positive.code:     :from :to :below :downto :above :by :in :across :index := :then :sum :collect))
  
  (defun normalize-loop-keywords (args)
    (mapcar (lambda (x)
              (or (find-if (lambda (key) (eq x (intern (string key))))
                           *loop-keywords*)
                  x))
            args))
  
  (defun parse-ps-loop (terms)
    (let (prologue
  
negative.code:           ,@prologue
            ,@initially
            (do* ,init-step-forms
                 ,end-test
              ,@(when first-time
                      `((when ,first-guard
                          ,@first-time
  