anchor.diff:  	       :message "Cannot seek with variable blocksize"))
   
       (multiple-value-bind (needed-num remainder)
  -	(floor sample blocksize)
  +	(floor sample (if streaminfo
  +                          (streaminfo-minblocksize streaminfo)
  +                          (frame-block-size (read-frame bitreader))))
         (declare (type non-negative-fixnum needed-num remainder))
   
         (labels ((dichotomy-search (start end)
  
positive.code:                :message "Seek error. Desired sample number is bigger than
                           number of samples in stream")))
  
    ;; Init the boundaries where desired sample must be
    (let ((start-pos audio-start)
  	(end-pos (reader-length bitreader)))
  
      ;; Now, if seektable is present, correct the boundaries
  
negative.code:   frame))
  
  ;; Rather slow (and buggy) absolute sample seek
  (defun seek-sample (bitreader sample &key seektable streaminfo)
    "Seeks to an interchannel sample.
     Sets input to new frame, which contains this sample.
     Returns position of this sample in the frame.
     SEEKTABLE and STREAMINFO are optional. Providing STREAMINFO enables
     additional sanity checks. Currently only fixed block size is supported."
    (declare (type reader bitreader)
  	   (type (or null streaminfo) streaminfo)
  	   (optimize (speed 0)))
  
    (with-accessors ((totalsamples streaminfo-totalsamples)) streaminfo
      (if (and streaminfo
  