anchor.diff:                             (create-directory-entry new-dir ".." "" NIL 0)
                              dot-dot-cluster)
               ;; Write to disk
  -            (write-file ffs (partition host) cluster-number fat new-dir)))
  +            (write-directory ffs (partition host) cluster-number fat new-dir)))
           ;; Write parent directory to disk
  -        (write-file ffs (partition host) cluster-n fat directory)
  +        (write-directory ffs (partition host) cluster-n fat directory)
           ;; Write fat
           (write-fat (partition host) ffs fat)
           ;; Return cluster-number, possibly new directory array and offset
  
positive.code:                          result
                           :offset (* n-cluster spc sector-size)))))
  
  (defun write-file (ffs disk start-cluster fat array)
    (let* ((spc (fat-%sectors-per-cluster ffs))
           (sector-size (block-device-sector-size disk)))
      (do ((cluster-n start-cluster (fat-value fat cluster-n))
           (last-cluster 0)
           (n-cluster 0 (1+ n-cluster)))
          ((>= cluster-n (last-cluster-value ffs))
           (if (> (length array)
                  (* n-cluster spc sector-size))
               (do ((cluster-n (next-free-cluster fat 3)
                               (next-free-cluster fat (1+ cluster-n)))
                    (i 0 (1+ i)))
                   ((= (length array)
                       (* (+ i n-cluster) spc sector-size))
                    (setf (fat-value ffs fat last-cluster) (last-cluster-value ffs))
                    (write-fat disk ffs fat))
                 (block-device-write disk
                                     (first-sector-of-cluster ffs cluster-n)
                                     spc
                                     array
                                     :offset (* (+ i n-cluster) spc sector-size))
                 (setf (fat-value ffs fat last-cluster) cluster-n)
                 (setf last-cluster cluster-n))
               t))
        (setf last-cluster cluster-n)
        (block-device-write disk
                            (first-sector-of-cluster ffs cluster-n)
                            spc
                            array
                            :offset (* n-cluster spc sector-size)))))
  
  (defun read-attributes (directory offset)
    (aref directory (+ offset 11)))
  
negative.code:   (free-file-entry directory start)
    ;; Write to disk
    (write-fat disk ffs fat)
    (write-directory ffs disk cluster-n fat directory))
  
  (defun expand-directory (directory cluster-size)
    (let ((new-dir (make-array (+ (length directory) cluster-size)
  