anchor.diff:          ;; Specification says we should "refuse to decode if set"
           (error 'wv-block-error :message "Reserved flag is set to 1"))
   
  -    (let ((sub-blocks-size (- (wv-block-size wv-block) 24)))
  +    (let ((sub-blocks-size (- (wv-block-size wv-block) 24))
  +          (*current-block* wv-block))
         (if (< sub-blocks-size 0)
             (error 'wv-block-error :message "Sub-blocks size is less than 0"))
         (setf (wv-block-metadata wv-block)
  
positive.code: 
  (in-package :easy-audio.wv)
  
  (define-condition wv-error ()
    ((message :reader wv-error-message
              :initarg :message))
    (:report (lambda (c s)
  	     (format s "WavPack error: ~A"
  		     (wv-error-message c))))
    (:documentation "General (unspecified) WavPack error"))
  (define-condition wv-block-error (wv-error) ())
  
  (defstruct wv-metadata
    (id   0 :type (ub 8))
    (size 0 :type (ub 24)) ; I do not like 'word-size' name in the
                           ; specification
    data)
  
  ;; Metadata id masks
  (defconstant +meta-id-function+            #x1f)
  
negative.code:              +meta-id-large-block+)
       +meta-id-large-block+))
  
  (defreader read-wv-metadata% ((make-instance 'wv-metadata) metadata)
    (wv-metadata-id (:octets 1))
    (wv-metadata-size (:octets (if (large-meta-p metadata) 3 1)) :endianness :little))
  
  (defun read-wv-metadata (reader)
    (let ((metadata (read-wv-metadata% reader)))
      ;; FIXME: promote to needed type
      (read-wv-metadata-body metadata reader)))
  
  ;; WavPack format specs:
  #|Here is the 32-byte little-endian header at the front of every WavPack block:
  