anchor.diff:  
   (defun beforep (time &optional (time-source *default-time-source*))
     (let ((current-time (funcall time-source)))
  -    (when (< current-time time) current-time)))
  +    (when (< current-time time) time)))
   
   (defun afterp (time &optional (time-source *default-time-source*))
     (let ((current-time (funcall time-source)))
       (when (> current-time time) current-time)))
   
   (defun betweenp (start-time end-time
  -                &optional (time-source *default-time-source*))
  +                 &optional (time-source *default-time-source*))
     (let ((current-time (funcall time-source)))
       (when (and (>= current-time start-time)
                  (<= current-time end-time)) 
  -      current-time)))
  +      end-time)))
   
   ;;--------------------------------------------------------------------
   
  
positive.code: 
  (in-package base-time)
  
  ;;----------------------------------------------------------------------
  
  (defmacro add-time-predicate (name args &body body)
    `(defun ,(symbolicate-package :time-syntax name) ,args
       ,@body))
  
  (defun time-syntaxp (name) 
    (symbol-function (symbolicate-package :time-syntax name)))
  
negative.code:                                     (cdr (assoc (first expression) defined)))
                                   (error "invalid time expression")))
              :append `((defun ,type (quantity) (floor (* quantity ,count)))
                        (add-time-syntax ,type (quantity) nil ;; {TODO} what is this for?
                          (list ',type quantity)))
              :do (push (cons type count) defined)))))
  
  