The #:capacity argument to make-gvector is restricted to an exact-positive-integer?, which prevents using make-gvector to create a zero-sized vector. I think this ought to be allowed, since if the capacity argument is dynamic (say, you're computing it based on indices for some subvector) returning an empty vector for the zero size case is perfectly reasonable.