anchor.diff:      (if (= sum checksum)
           t
           ;; try the older, signed arithmetic way
  -        (let ((sum (compute-old-checksum-for-tar-header block start)))
  -          (= sum checksum)))))
  +        (let ((signed-sum (compute-old-checksum-for-tar-header block start)))
  +          (values (= signed-sum checksum) sum)))))
   
   (defun null-block-p (block start)
     (declare (type (simple-array (unsigned-byte 8) (*)) block))
  
positive.code:   (with-extracted-fields (tar-header buffer start
                                       %name mode mtime size checksum uid
                                       gid magic typeflag uname gname)
      (if (tar-block-checksum-matches-p buffer checksum start)
          (make-instance 'tar-entry
                         :%name %name
                         :mode mode
                         :mtime mtime
                         :size size
                         :checksum checksum
                         :uid uid
                         :gid gid
                         :magic magic
                         :typeflag typeflag
                         :uname uname
                         :gname gname)
          (error "Invalid tar entry header data!"))))
  
  
  
negative.code: (defmethod initialize-instance :after ((instance tar-archive) &rest initargs)
    (declare (ignore initargs))
    (initialize-entry-buffer instance +tar-header-length+))
  
  
  ;;; Conditions
  
  (define-condition invalid-tar-checksum-error (archive-error)
    ((provided :initarg :provided :reader provided)
     (computed :initarg :computed :reader computed))
    (:report (lambda (condition stream)
               (format stream "Invalid tar header checksum ~D (wanted ~D)"
                       (provided condition) (computed condition))))
    (:documentation "Signaled when the checksum in a tar header is invalid."))
  
  ;;; Groveling through tar headers
  
  (defun convert-bytevec-to-string (buffer &key (start 0) end)
    (let* ((end (or end
  