anchor.diff:  
   (defun file-name (pathname)
     "Take pathname and return file name."
  -  (unless (or (eql :wild (pathname-name pathname))
  -              (eql :wild (pathname-type pathname)))
  -    (if (pathname-type pathname)
  -        (concatenate 'string (pathname-name pathname) "." (pathname-type pathname))
  -        (pathname-name pathname))))
  +  (let ((name (pathname-name pathname))
  +        (type (pathname-type pathname))
  +        (previous-p (eql (pathname-version pathname) :previous)))
  +    (unless (or (eql :wild name)
  +                (eql :wild type))
  +      (cond ((and type previous-p)
  +             (concatenate 'string name "." type "~"))
  +            (type
  +             (concatenate 'string name "." type))
  +            (previous-p
  +             (concatenate 'string name "~"))
  +            (T
  +             name)))))
   
   (defun open-file-metadata (host pathname)
     (loop :with fat32 := (fat-structure host)
  
positive.code:         :for directory-name :in (rest (pathname-directory pathname))
          :do (do-files (start) directory
                  (setf directory-cluster (create-file host directory directory-cluster directory-name nil
                                                       (ash 1 +attribute-directory+))
                        directory (read-file fat32 disk directory-cluster fat)
                        created T)
  
negative.code:                                    buffer-position (create-file host parent-dir parent-cluster
                                                                  (pathname-name pathname)
                                                                  (pathname-type pathname)
                                                                  (eql (pathname-version pathname) :previous)
                                                                  (ash 1 +attribute-archive+))
                                     created-file-p t
                                     abort-action :delete)
  