Well, this is what I would call a "curprising consequence", but yes, I would say that (defmacro foo (&optional a b &rest (c d)) ...) in effect makes a, b, c, and d all be required, else the parameters c and d could never be satisfied. You can get the effect you seem to want by writing (defmacro foo (&optional a b &rest (&optional c d) ...) ... --Guy