diff --git a/code/bit-bash.lisp b/code/bit-bash.lisp
index b7201a434e3c1c8a7373a79ad8f1e319718bba91..d17a531ccbbcd541d2fc5233f9d34e06225b8e3b 100644
--- a/code/bit-bash.lisp
+++ b/code/bit-bash.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/bit-bash.lisp,v 1.10 1991/04/23 01:24:29 wlott Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/bit-bash.lisp,v 1.11 1991/04/28 01:10:29 wlott Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -381,7 +381,7 @@
 	      ;; We need to loop from right to left.
 	      (incf dst-word-offset words)
 	      (incf src-word-offset
-		    (floor (+ src-bit-offset length) unit-bits))
+		    (1- (ceiling (+ src-bit-offset length) unit-bits)))
 	      (let ((next 0)
 		    (prev (funcall src-ref-fn src src-word-offset)))
 		(declare (type unit prev next))
@@ -391,7 +391,7 @@
 					   (decf src-word-offset)))))
 		  (declare (inline get-next-src))
 		  (unless (zerop final-bits)
-		    (unless (> (- unit-bits src-shift) final-bits)
+		    (when (> final-bits (- unit-bits src-shift))
 		      (get-next-src))
 		    (let ((value (32bit-logical-or
 				  (shift-towards-end next (- src-shift))