anchor.diff:      :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))
  +  (mapcar
  +   (lambda (x)
  +     (or (find-if (lambda (key) (and (symbolp x) (equal (symbol-name x) (symbol-name key))))
  +                  *loop-keywords*)
  +         x))
  +   args))
   
   (defun parse-ps-loop (terms)
     (let (prologue
  
positive.code:           ,@prologue
            ,@initially
            (do* ,init-step-forms
                 ,end-test-forms
              ,@(when first-time
                      `((when ,first-guard
                          ,@first-time
  
negative.code:         initially finally
          first-time last-time
          accum-var accum-kind
          destructurings body)
      (macrolet ((with-local-var ((name expr) &body body)
                   (once-only (expr)
                     `(let ((,name (aif (and (complex-js-expr? ,expr) (ps-gensym))
  