If you wish to create a vector and return it to LISP it must be created in the LISP space of your memory. This can be done by first calling alloc_object and then for an array calling array_allocself. Here is some psuedocode: How do you ensure that the GC doesn't move the vector around while the C routine is operating on it? Dave