diff --git a/src/code/bit-bash.lisp b/src/code/bit-bash.lisp
index a9bb688de1c0cbbd8a96848a22e68dd20447c88d..ba2706a3c4a455c89dd72d38aa9adac99822d7d6 100644
--- a/src/code/bit-bash.lisp
+++ b/src/code/bit-bash.lisp
@@ -562,7 +562,7 @@
 		(unless (zerop dst-byte-offset)
 		  ;; We are only writing part of the first word, so mask off the
 		  ;; bits we want to preserve.
-		  (let ((mask (end-mask (- dst-byte-offset)))
+		  (let ((mask (end-mask (* vm:byte-bits (- dst-byte-offset))))
 			(orig (funcall dst-ref-fn dst dst-word-offset))
 			(value (funcall src-ref-fn src src-word-offset)))
 		    (declare (type unit mask orig value))