anchor.diff:                                      (read-first-cluster file-data start)
                                       (fat host))
                     read-buffer-position (read-first-cluster file-data start)
  -                  read-buffer-size (read-size file-data start))
  +                  read-buffer-size (read-file-size file-data start))
               (ecase if-does-not-exist
                 (:error (error 'simple-file-error
                                :pathname pathname
  
positive.code:   (logior (ash (sys.int::ub16ref/le directory (+ 20 offset)) 16)
            (ash (sys.int::ub16ref/le directory (+ 26 offset)) 0)))
  
  (defun read-size (directory offset)
    (sys.int::ub32ref/le directory (+ 28 offset)))
  
  (defun write-file-size (stream)
    (let* ((host (host stream))
           (file-length (read-buffer-size stream)))
      (multiple-value-bind (directory cluster-n offset)
          (find-file host (file-stream-pathname stream))
        (when offset
          (setf (aref directory (+ 28 offset)) (ldb (byte 8 0) file-length)
                (aref directory (+ 29 offset)) (ldb (byte 8 8) file-length)
                (aref directory (+ 30 offset)) (ldb (byte 8 16) file-length)
                (aref directory (+ 31 offset)) (ldb (byte 8 24) file-length))
          (write-file (fat32-structure host) (partition host) cluster-n (fat host) directory)))))
  
  (defun checksum (array offset)
    "Return checksum of sort name"
  
negative.code:       (replace result temp-buf :start1 (* n-cluster spc sector-size)))))
  
  ;; TODO Add posibility to resize file
  ;; TODO Don't rewrite unchanged clusters.
  (defun write-file (fat32 disk start-cluster fat array)
    (let* ((spc (fat32-sectors-per-cluster fat32))
           (sector-size (mezzano.supervisor:disk-sector-size disk))
  