anchor.diff:            `((,deadsym ,deadline t)))))
   
   ;;{TODO} gensym the progress var? hmmm no then cant be used in user code.
  -;;
  +;;{TODO} progres does not take into account overflow
   (def-time-condition before (deadline &key progress) t
     (unless (symbolp progress) (error "'progress' in 'each' must be a symbol"))
     (let* ((deadsym (gensym "deadline"))
  
positive.code:                                       :if (and override (third i))
                                        :collect `(setf ,(first i) (- ,(second i) (- (funcall *default-time-source*) ,expired-test)))
                                        :else 
                                        :collect `(setf ,(first i) ,(second i)))))))))))
        (make-instance
         'tcompile-obj
         :code `(let ,(when let-forms (remove-duplicates let-forms :test #'equal)) 
                  ;;{TODO} let form name clash
                  ,(t-chain-expand counter-sym chain-forms))
         :run-test `(< ,counter-sym ,(length forms))
         :expired-test (when (not repeat) `(= ,counter-sym ,(length forms)))
         :closed-vars (cons `(,counter-sym 0)
  
negative.code: (defun t-chain-expand (counter forms &optional accum)
    (loop :for form :in forms :if (null (first form)) 
       :do (error "CEPL: The following time form does not expire and thus~% this chain of forms can never progress:~%~%~a" form))
    (loop :for (expire-test run-test code initialize-next local-vars)
       :in (reverse forms):for i :from (1- (length forms)) :downto 0 :do
       (setf accum `(let ,local-vars
                      (if ,expire-test
                          (progn (when (= ,counter ,i) ,@initialize-next) ,accum)
                          (when ,run-test ,code))))
       :finally (return accum)))
  
  (defun %compile-time-cond-form (form)
  