I find your lack of parentheses disturbing. I'd personally prefer:
(b-when foo (plusp 1)
(frob foo))
These implementations also don't handle declarations correctly ;P A surprisingly tricky topic.