anchor.diff:                                                                  (pathname-name pathname)
                                                                   (pathname-type pathname)
                                                                   (ash 1 +attribute-archive+))
  -                                   created-file t
  +                                   created-file-p t
                                      abort-action :delete)
                                (error 'simple-file-error
                                       :pathname pathname
                                       :format-control "File ~A does not exist. ~S"
                                       :format-arguments (list pathname (file-name pathname)))))))))
  -      (when (and (not created-file) (member direction '(:output :io)))
  +      (when (and (not created-file-p) (member direction '(:output :io)))
           (ecase if-exists
             (:error (error 'simple-file-error
                            :pathname pathname
  
positive.code:         (assert source-start (source-start) "Source file not found. ~s" source)
          (multiple-value-bind (dest-dir dest-cluster dest-start) (open-file-metadata host dest)
            (assert (not dest-start) (dest-start) "Destination file alredy exist. ~s" dest)
            (let ((fat32 (fat-structure host))
                  (disk (partition host))
                  (fat (fat host)))
              (do-file (i source-start) source-dir
                (let ((start (if (< i 0)
                                 source-start
                                 (+ 32 i))))
                  (if (string= (file-name source)
                               (file-name dest))
                      (let ((metadata (subseq source-dir start (+ 32 source-start))))
                        (replace dest-dir metadata :start1 (next-n-spaces dest-dir (/ (length metadata) 32))))
                      ;; Write short name part
                      (let* ((pathname-name (pathname-name dest))
                             (pathname-type (pathname-type dest))
                             (name (concatenate 'string pathname-name "." pathname-type))
                             (short-name (make-short-name pathname-name pathname-type dest-dir))
                             (name-length (length name))
                             (start-offset (next-n-spaces dest-dir (if (> name-length 11)
                                                                       (1+ (ceiling
                                                                            (/ name-length 13)))
                                                                       1)))
                             (end-offset (+ start-offset (ash (if (> name-length 11)
                                                                  (ceiling (/ name-length 13))
                                                                  0)
                                                              5))))
                        ;; Copy short part
                        (let ((metadata (subseq source-dir source-start (+ 32 source-start))))
                          (replace dest-dir metadata :start1 end-offset))
                        ;; Change short name
                        (setf (read-short-name dest-dir end-offset) short-name)
                        ;; Write long name parts only if needed
                        (unless (and (>= 8 (length pathname-name))
                                     (>= 3 (length pathname-type)))
                          (setf (read-long-name dest-dir start-offset) name))))
                  (if (equalp (pathname-directory source)
                              (pathname-directory dest))
                      (loop :for part-offset :from start :to source-start :by 32
                            :do (setf (aref dest-dir part-offset) #xE5))
                      (progn (loop :for part-offset :from start :to source-start :by 32
                                   :do (setf (aref source-dir part-offset) #xE5))
                             (write-file fat32 disk source-cluster fat source-dir)))
                  (write-file fat32 disk dest-cluster fat dest-dir))))))))
  
  (defmethod file-write-date-using-host ((host fat32-host) path)
    (multiple-value-bind (parent-dir parent-cluster file-offset) (open-file-metadata host path)
  
negative.code:           (buffer-position 0)
            (file-position 0)
            (file-length 0)
            (created-file-p nil)
            (abort-action nil))
        (multiple-value-bind (file-data file-cluster file-size) (open-file host pathname)
          (if file-size
  