It appears that bind does not correctly expand declarations for multiple-value bindings: (bind (((:values a b) (c))) (declare (type integer a b)) (d a b)) ==> (multiple-value-bind (a b) (c) ;; no declaration for a (declare (type integer b)) (d a b)) Ariel