anchor.diff:          (unless (= #x0F (aref directory (+ 11 i)))
             (return i))))))
   
  -(defmacro do-files ((var) directory &body body)
  +(defmacro do-files ((var) directory finally &body body)
     `(do ((,var (next-file ,directory 0) (next-file ,directory (+ 32 ,var))))
          ((null ,var)
  -        t)
  +        ,finally)
        ,@body))
   
   (defun read-name (directory offset)
  
positive.code:                                          (fat host))
          :for directory :in (rest (pathname-directory pathname))
          :do (do-files (start) cluster-data
                (when (string= directory (read-file-name cluster-data start))
                  (setf cluster-sector (first-sector-of-cluster fat32 (read-first-cluster cluster-data start))
                        cluster-data (read-file fat32
  
negative.code:         :finally (if (null file-name)
                       (return-from find-file (values cluster-data cluster-sector))
                       (do-files (start) cluster-data
                                 (values cluster-data cluster-sector)
                         (when (string= file-name (read-file-name cluster-data start))
                           (return-from find-file (values cluster-data cluster-sector start)))))))
  
  