anchor.diff:  (defun text-loc (url)
     (concatenate 'string (cache-loc url) "text"))
   
  +(defun locked-text-loc (url)
  +  (concatenate 'string (cache-loc url) "text.locked"))
  +
   (defun title-loc (url)
     (concatenate 'string (cache-loc url) "title"))
   
  
positive.code:   (with-file-lock ((make-pathname :directory (cache-loc url) :name "main"))
      (open (make-pathname :directory (cache-loc url) :name "page.html"))))
  
  ;;;FIXME: Need to clean up after crash that leaves main.lock in place. 
  (defun grab-text (url &key (update t))
    (when update (update-page url))
    (let ((tname
            (make-pathname
             :directory (cache-loc url)
             :name
             (if (probe-file
                  (make-pathname :directory (cache-loc url) :name "text.locked"))
                 "text.locked" "text"))))
      (if (probe-file tname)
          (with-file-lock ((make-pathname :directory (cache-loc url) :name "main"))
            (read-file-into-string tname))
  
negative.code: (in-package :wf/text-extract)
  
  ;;;(defparameter *cache-path* "/home/ben/opinml/")
  ;;(defparameter *cache-age* (encode-time-delta 0 10 0 0))
  ;; FIXME: We don't really need to refresh the texts. Whole thing needs rethinking. Should we store
  ;; texts at all?
  (defparameter *cache-age* (encode-time-delta 0 0 0 90))
  (defvar *bynum*)
  (defvar *byurl*)
  ;;(defparameter *text-extractor-script*
  