anchor.diff:  		       (t sample-rate))))
       (setf (frame-crc-8 frame) (tbs:read-octet stream))
   
  -;    (let ((bit-reader (make-bit-reader stream)))
  - ;     (setf (frame-subframes frame)
  -;	    ;; FIXME: maybe we should use channel-assignment?
  -;	    (loop for sf below (1+ (streaminfo-channels-1 streaminfo)) collect
  -;		  (subframe-reader bit-reader frame)))
  - ;     ;; Check zero padding
  -  ;    (multiple-value-bind (bit remainder) (funcall bit-reader 0)
  -;	(declare (ignore bit))
  -;	(if (/= remainder 0) (error "Padding to byte-alignment is not zero"))))
  - ;   (setf (frame-crc-16 frame) (read-to-integer stream 2))
  -    frame))
  +    (setf (frame-subframes frame)
  +	  ;; FIXME: maybe we should use channel-assignment?
  +	  (loop for sf below (1+ (streaminfo-channels-1 streaminfo)) collect
  +		(subframe-reader stream frame)))
  +
  +    ;; Check zero padding
  +    (if (/= (tbs:read-to-byte-alignment stream) 0) (error "Padding to byte-alignment is not zero"))
  +    (setf (frame-crc-16 frame) (tbs:read-bits 16 stream))
  +  frame))
  
positive.code:   (with-slots (sample-size) frame
  	      (setf (subframe-constant-value subframe) ;; FIXME: value is signed in original libFLAC
  		    (unsigned-to-signed
  		     (funcall bit-reader sample-size)
  		     sample-size))))
  
  (defmethod subframe-body-reader (bit-reader (subframe subframe-verbatim) frame)
  
negative.code: 		(integer-to-array chunk buf sample-size :signed t)
  		(setf (subframe-verbatim-buffer subframe) buf))))
  
  (defun subframe-reader (stream frame)
    (if (/= (tbs:read-bit stream) 0) (error "Error reading subframe"))
      (let* ((type-num (tbs:read-bits 6 stream))
  	   (type-args
  	    (cond
  	     ((= type-num 0) '(subframe-constant))         ; 000000
  