diff --git a/init/defmfun-array.lisp b/init/defmfun-array.lisp
index a8c52a8d06f1090d2a6bd9ddad788a03b5f50ff8..f369b2c801c7790aeeca87a78e5d8943d24d317f 100644
--- a/init/defmfun-array.lisp
+++ b/init/defmfun-array.lisp
@@ -1,6 +1,6 @@
 ;; Helpers for defining GSL functions on arrays
 ;; Liam Healy 2009-01-07 22:01:16EST defmfun-array.lisp
-;; Time-stamp: <2011-01-12 00:22:59EST defmfun-array.lisp>
+;; Time-stamp: <2011-01-29 21:40:31EST defmfun-array.lisp>
 ;;
 ;; Copyright 2009, 2011 Liam M. Healy
 ;; Distributed under the terms of the GNU General Public License
@@ -154,13 +154,15 @@
   (case category
     (:element-type (grid:number-class element-type))
     (:component-float-type
-     (grid:number-class (grid:component-float-type element-type)))
-    (otherwise
-     (grid:data-class-name
-      (if (and (eq category 'both) replace-both)
-	  replace-both
-	  category)
-      element-type))))
+       (grid:number-class (grid:component-float-type element-type)))
+    ((vector grid:matrix both)
+       (grid:data-class-name
+	(if (and (eq category 'both) replace-both)
+	    replace-both
+	    category)
+	element-type))
+    ;; an actual not-to-be-replaced class name
+    (otherwise category)))
 
 (defun actual-class-arglist
     (arglist element-type c-arguments &optional replace-both)