anchor.diff:      (log-format 8 "Running computation: ~S" computation)
       (run-computation env computation :force force)))
   
  -;; XXX Broken when files are written in subsecond intervals, Fix for when
  -;; output-files don't even exist yet.
  -(defun all-newer-pathnames-p (output-pn input-pn)
  -  (>= (oldest-timestamp output-pn) (newest-timestamp input-pn)))
  -
   (defun safe-file-write-date (p)
     (and p (asdf::probe-file* p) (ignore-errors (file-write-date p))))
   
  +;; XXX I am suspicious of this code since if you pass it a pathname to
  +;; a file which doesn't exist, the oldest timestamp is the most future
  +;; timestamp which could exist.
   (defun oldest-timestamp (pathnames)
     (loop :with ot = most-positive-single-float
       :for p :in pathnames
  
positive.code:                                    :collect (grain-pathname-text env o)))))
  
      ;; first, check the outputs are newew than the inputs, if so, bail.
      (when (and (all-newer-pathnames-p output-pathnames input-pathnames) ; same checking as with make
  	       (not force)) ; force computation
        (return-from run-computation t))
      ;; create the output directories
      (dolist (output-pn output-pathnames)
        (ensure-directories-exist output-pn))
      (dolist (external-command (external-commands-for-computation env command))
        (log-format 5 "running:~{ ~A~}" (mapcar #'escape-shell-token external-command))
        (let ((text (run-program/read-output-string external-command)))
  
negative.code:     :when (and pt (> pt nt)) :do (setf nt pt)
      :finally (return nt)))
  
  ;; XXX Broken when files are written in subsecond intervals.
  ;; XXX Touches the disk too much to get timestamps.
  (defun all-newer-pathnames-p (output-pn input-pn)
    (and
     ;; If any output files don't exist, then they can't possibly be
     ;; newer than the inputs!
     (every #'safe-file-write-date output-pn)
     ;; If any input files have newer timestamps than output files...
     (>= (newest-timestamp input-pn)
         (oldest-timestamp output-pn))))
  
  ;; FIXME XXX Test this!
  (defun run-computation (env computation &key force)
    (let* ((inputs (computation-inputs computation)) ; a grain
  	 (outputs (computation-outputs computation)) ; a grain
  