diff --git a/compiler/ppc/macros.lisp b/compiler/ppc/macros.lisp
index 36d8e8dde7b9d12ccd2a9e22318f4eb9ef4d8986..bd0a9459f52223e8d85f0f5ac7d6e31c8bd3f7ce 100644
--- a/compiler/ppc/macros.lisp
+++ b/compiler/ppc/macros.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman (FAHLMAN@CMUC). 
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ppc/macros.lisp,v 1.5 2005/02/12 01:44:50 rtoy Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ppc/macros.lisp,v 1.6 2005/02/12 03:08:51 rtoy Exp $
 ;;;
 ;;; This file contains various useful macros for generating PC code.
 ;;;
@@ -489,12 +489,12 @@
 	(progn
 	  (inst andi. ,flag-tn alloc-tn 7)
 	  (inst twi :ne ,flag-tn 0))
-	(inst lr ,flag-tn 4)
+	(inst lr ,flag-tn (- ,n-extra 4))
 	(inst addi alloc-tn alloc-tn 4))
       ,@forms
       (without-scheduling ()
-       (inst subi ,flag-tn ,flag-tn 4)
-       (inst twi :ne ,flag-tn 0))
+       (inst add alloc-tn alloc-tn ,flag-tn)
+       (inst twi :lt alloc-tn 0))
       #+debug
       (progn
 	(inst andi. ,flag-tn alloc-tn 7)