diff --git a/compiler/pack.lisp b/compiler/pack.lisp
index 9833fe7e1169f57a12e6d189056d4d2e4aae1550..faf5bcd7675ca130b104f8a20b81027266358c2d 100644
--- a/compiler/pack.lisp
+++ b/compiler/pack.lisp
@@ -187,7 +187,12 @@
   (declare (type sc sc))
   (let* ((sb (sc-sb sc))
 	 (size (finite-sb-current-size sb))
-	 (inc (max (sb-size sb) (sc-element-size sc) (- needed-size size)))
+	 (inc (max (sb-size sb)
+		   (+ (sc-element-size sc)
+		      (- (* (ceiling size (sc-alignment sc))
+			    (sc-alignment sc))
+			 size))
+		   (- needed-size size)))
 	 (new-size (+ size inc))
 	 (conflicts (finite-sb-conflicts sb))
 	 (block-size (if (zerop (length conflicts))