Index: /trunk/ccl/level-1/l1-streams.lisp
===================================================================
--- /trunk/ccl/level-1/l1-streams.lisp	(revision 584)
+++ /trunk/ccl/level-1/l1-streams.lisp	(revision 585)
@@ -882,5 +882,5 @@
                                 :limit insize))
           (setf (ioblock-inbuf-lock ioblock) (make-lock))
-          (setf (ioblock-element-shift ioblock) (1- (/ in-size-in-octets insize)))
+          (setf (ioblock-element-shift ioblock) (ceiling (log  (/ in-size-in-octets insize) 2)))
           )))
     (if share-buffers-p
@@ -903,5 +903,5 @@
                                   :size out-size-in-octets))
             (setf (ioblock-outbuf-lock ioblock) (make-lock))
-            (setf (ioblock-element-shift ioblock) (1- (/ out-size-in-octets outsize)))
+            (setf (ioblock-element-shift ioblock) (ceiling (log (/ out-size-in-octets outsize) 2)))
             ))))
     (when element-type
Index: /trunk/ccl/level-1/l1-sysio.lisp
===================================================================
--- /trunk/ccl/level-1/l1-sysio.lisp	(revision 584)
+++ /trunk/ccl/level-1/l1-sysio.lisp	(revision 585)
@@ -369,8 +369,10 @@
 (defun input-file-ioblock-advance (stream file-ioblock read-p)
   (let* ((newpos (+ (file-ioblock-octet-pos file-ioblock)
-		    (io-buffer-count (file-ioblock-inbuf file-ioblock)))))
-    (unless (eql newpos (file-octet-filepos file-ioblock))
-      (break "Expected newpos to be ~d, fd is at ~d"
-	     newpos (file-octet-filepos file-ioblock)))
+		    (io-buffer-count (file-ioblock-inbuf file-ioblock))))
+	 (curpos (ioblock-octets-to-elements
+		  file-ioblock
+		  (file-octet-filepos file-ioblock))))
+    (unless (eql newpos curpos)
+      (break "Expected newpos to be ~d, fd is at ~d" newpos curpos))
     (setf (file-ioblock-octet-pos file-ioblock) newpos)
     (file-stream-advance stream file-ioblock read-p)))
