diff --git a/compiler/mips/array.lisp b/compiler/mips/array.lisp
index 7f9530913968508091691420bcaf99fb5449f10a..8c56ff9a72806f5bfea9c4320e7faefec8c6f21a 100644
--- a/compiler/mips/array.lisp
+++ b/compiler/mips/array.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman (FAHLMAN@CMUC). 
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/array.lisp,v 1.15 1990/05/15 01:17:07 wlott Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/array.lisp,v 1.16 1990/06/02 16:06:44 wlott Exp $
 ;;;
 ;;;    This file contains the MIPS definitions for array operations.
 ;;;
@@ -27,9 +27,12 @@
   (:generator 0
     (pseudo-atomic (ndescr)
       (inst addu header alloc-tn vm:other-pointer-type)
-      (inst addu alloc-tn alloc-tn
-	    (* vm:array-dimensions-offset vm:word-bytes))
-      (inst addu alloc-tn alloc-tn rank)
+      (inst addu alloc-tn
+	    (+ (* vm:array-dimensions-offset vm:word-bytes)
+	       vm:lowtag-mask))
+      (inst addu alloc-tn rank)
+      (inst li ndescr (lognot vm:lowtag-mask))
+      (inst and alloc-tn ndescr)
       (inst sll ndescr rank vm:type-bits)
       (inst or ndescr ndescr type)
       (inst srl ndescr ndescr 2)