anchor.diff:    (declare (ignore temporal-statements))
     (error "'Repeat' can only be used inside a tlambda*"))
   
  -(defun tprogn (forms)
  +(defun tprogn (forms &optional rootp)
     (let* ((processed-forms (mapcar #'%process-tprogn-form forms))
  -         (let-forms (remove nil (mapcan #'t-local-vars processed-forms))))
  +         (let-forms (if rootp
  +                        (mapcar #'t-local-vars processed-forms)
  +                        (remove nil (mapcan #'t-local-vars processed-forms)))))
       (make-instance
        'tcompile-obj
        :code `(progn
  
positive.code:             (block tlambda-implicit-block
                (tagbody tlambda-start
                   (return-from tlambda-implicit-block
                     (let ,local-vars
                       ,lbody)))))))))
  
  (defmacro tdefun (name args &body body) (gen-time-function-body name args body))
  (defmacro tlambda (args &body body) (gen-time-function-body nil args body))
  
negative.code: 
  ;; {TODO} can use func-name for block if tdefun
  (defun gen-time-function-body (name args body)
    (with-t-obj () (tprogn body t)
      (let ((lbody (if expired-test
                       `(if ,expired-test
                            (cfunc:signal-expired)
  