anchor.diff:     (initially :initform nil :accessor initially)
      (finally :initform nil :accessor finally)
      (during-first :initform nil :accessor during-first)
  +   (first-guard :initform nil :accessor first-guard)
      (during-last :initform nil :accessor during-last)
  +   (last-guard :initform nil :accessor last-guard)
      (default-accum-var :initform nil :accessor default-accum-var)
      (default-accum-kind :initform nil :accessor default-accum-kind)
      (body :initform nil :accessor body)))
  
positive.code:     (:maximize `(setf ,var (if (null ,var) ,term (max ,var ,term))))
      (:collect `((@ ,var :push) ,term))))
  
  (defun repeat-clause (state)
    (let ((index (ps-gensym)))
      (setf (tokens state) (append `(,index :from 0 :below ,(eat state)) (tokens state)))
  
negative.code:       (:until (push `(when ,(eat state) break) (body state)))
        (:initially (push (eat state :progn) (initially state)))
        (:finally (push (eat state :progn) (finally state)))
        (:first-time (first-time-clause state))
        (:last-time (last-time-clause state))
        (otherwise (push (body-clause term state) (body state))))))
  
  (defun parse-ps-loop (terms)
  