diff --git a/linear-algebra/blas2.lisp b/linear-algebra/blas2.lisp
index 5b9983d24e7939148e3b73293b5386f2cf64d237..39f2c71438ebd6eafb10de5d599c129b1c69286c 100644
--- a/linear-algebra/blas2.lisp
+++ b/linear-algebra/blas2.lisp
@@ -1,6 +1,6 @@
 ;; BLAS level 2, Matrix-vector operations
 ;; Liam Healy, Wed Apr 26 2006 - 21:08
-;; Time-stamp: <2011-01-12 00:42:10EST blas2.lisp>
+;; Time-stamp: <2011-02-19 13:08:23EST blas2.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009, 2011 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -53,7 +53,7 @@
      (alpha 1) (beta 1) (TransA :notrans) TransB
      &aux
      (yarr
-      (grid:make-foreign-array-or-default
+      (grid:ensure-foreign-array
        y (matrix-product-dimensions A x) nil element-type 0)))
   ("gsl_blas_" :type "gemv")
   ((transa cblas-transpose) (alpha :element-c-type) ((mpointer A) :pointer)
diff --git a/linear-algebra/cholesky.lisp b/linear-algebra/cholesky.lisp
index 253474c8c5da3b7419471f523e773030400c4a75..fa5a8d314998e51e748b9b00600bab1c277715b8 100644
--- a/linear-algebra/cholesky.lisp
+++ b/linear-algebra/cholesky.lisp
@@ -1,6 +1,6 @@
 ;; Cholesky Decomposition
 ;; Liam Healy, Wed May  3 2006 - 16:38
-;; Time-stamp: <2011-01-12 00:29:25EST cholesky.lisp>
+;; Time-stamp: <2011-02-19 13:08:24EST cholesky.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009, 2011 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -53,7 +53,7 @@
 (defmfun cholesky-solve
     ((A grid:matrix) (b vector) &optional x-spec
      &aux
-     (x (grid:make-foreign-array-or-default x-spec (grid:dimensions b) t)))
+     (x (grid:ensure-foreign-array x-spec (grid:dimensions b) t)))
   (("gsl_linalg" :complex "_cholesky_svx")
    ("gsl_linalg" :complex "_cholesky_solve"))
   ((((mpointer A) :pointer) ((mpointer b) :pointer))
diff --git a/linear-algebra/householder.lisp b/linear-algebra/householder.lisp
index 10c1e03e829e930a292d75f20969e5c2d1998a19..4b6e27cdd46c657d99c5e818825693d72b77b7af 100644
--- a/linear-algebra/householder.lisp
+++ b/linear-algebra/householder.lisp
@@ -1,6 +1,6 @@
 ;; Householder Transformations
 ;; Liam Healy, Wed May 10 2006 - 10:03
-;; Time-stamp: <2011-01-10 18:19:08EST householder.lisp>
+;; Time-stamp: <2011-02-19 13:08:23EST householder.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009, 2011 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -87,7 +87,7 @@
 (defmfun householder-solve
     (A b &optional x-spec
        &aux
-       (x (grid:make-foreign-array-or-default x-spec (grid:dimensions b) t)))
+       (x (grid:ensure-foreign-array x-spec (grid:dimensions b) t)))
   ("gsl_linalg_HH_svx" "gsl_linalg_HH_solve")
   ((((mpointer A) :pointer) ((mpointer b) :pointer))
    (((mpointer A) :pointer) ((mpointer b) :pointer)
diff --git a/linear-algebra/qr.lisp b/linear-algebra/qr.lisp
index 682a9036d7758c11270a71ff73abd95d37fd23e7..dfe5796f31868cae6b80cb5a0c15279909aa4cc8 100644
--- a/linear-algebra/qr.lisp
+++ b/linear-algebra/qr.lisp
@@ -1,6 +1,6 @@
 ;; QR decomposition
 ;; Liam Healy 2008-02-17 11:05:20EST qr.lisp
-;; Time-stamp: <2011-01-10 18:19:08EST qr.lisp>
+;; Time-stamp: <2011-02-19 13:08:23EST qr.lisp>
 ;;
 ;; Copyright 2008, 2009, 2011 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -62,7 +62,7 @@
 (defmfun QR-solve
     (QR tau b &optional x-spec
 	&aux
-	(x (grid:make-foreign-array-or-default x-spec (grid:dimensions b) t)))
+	(x (grid:ensure-foreign-array x-spec (grid:dimensions b) t)))
   ("gsl_linalg_QR_svx" "gsl_linalg_QR_solve")
   ((((mpointer QR) :pointer) ((mpointer tau) :pointer)
     ((mpointer b) :pointer))
@@ -129,7 +129,7 @@
 (defmfun QR-Rsolve
     (QR b &optional x-spec
        &aux
-       (x (grid:make-foreign-array-or-default x-spec (grid:dimensions b) t)))
+       (x (grid:ensure-foreign-array x-spec (grid:dimensions b) t)))
   ("gsl_linalg_QR_Rsvx" "gsl_linalg_QR_Rsolve")
   ((((mpointer QR) :pointer) ((mpointer b) :pointer))
    (((mpointer QR) :pointer) ((mpointer b) :pointer) ((mpointer x) :pointer)))
@@ -189,7 +189,7 @@
 (defmfun R-solve
     (R b &optional x-spec
        &aux
-       (x (grid:make-foreign-array-or-default x-spec (grid:dimensions b) t)))
+       (x (grid:ensure-foreign-array x-spec (grid:dimensions b) t)))
   ("gsl_linalg_R_svx" "gsl_linalg_R_solve")
   ((((mpointer R) :pointer) ((mpointer b) :pointer))
    (((mpointer R) :pointer) ((mpointer b) :pointer) ((mpointer x) :pointer)))
diff --git a/linear-algebra/qrpt.lisp b/linear-algebra/qrpt.lisp
index 1da031e93d9a3b8ccf06846c71e0ded500e58707..af9c087f312afa64fc08529267c2f87c350ad768 100644
--- a/linear-algebra/qrpt.lisp
+++ b/linear-algebra/qrpt.lisp
@@ -1,6 +1,6 @@
 ;; QR with column pivoting
 ;; Liam Healy, Fri Apr 28 2006 - 16:53
-;; Time-stamp: <2011-01-10 18:19:08EST qrpt.lisp>
+;; Time-stamp: <2011-02-19 13:08:22EST qrpt.lisp>
 ;;
 ;; Copyright 2006, 2007, 2008, 2009, 2011 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -80,7 +80,7 @@
 (defmfun QRPT-solve
     (QR tau permutation b &optional x-spec
        &aux
-       (x (grid:make-foreign-array-or-default x-spec (grid:dimensions b) t)))
+       (x (grid:ensure-foreign-array x-spec (grid:dimensions b) t)))
   ("gsl_linalg_QRPT_svx" "gsl_linalg_QRPT_solve")
   ((((mpointer QR) :pointer) ((mpointer tau) :pointer)
     ((mpointer permutation) :pointer) ((mpointer b) :pointer))
@@ -131,7 +131,7 @@
 (defmfun QRPT-Rsolve
     (QR permutation b &optional x-spec
        &aux
-       (x (grid:make-foreign-array-or-default x-spec (grid:dimensions b) t)))
+       (x (grid:ensure-foreign-array x-spec (grid:dimensions b) t)))
   ("gsl_linalg_QRPT_Rsvx" "gsl_linalg_QRPT_Rsolve")
   ((((mpointer QR) :pointer) ((mpointer permutation) :pointer)
     ((mpointer b) :pointer))