It'd be easy, since ac.scm just changes ~foo into (complement foo) (except (~foo x) is changed to (no (foo x)), but that doesn't affect us here). Just change complement.
But I don't think I've ever made that slip. Function complementation isn't the same as Boolean-not, so overloading the visually distinctive ~foo based on context rubs me the wrong way. I'd probably get used to it, though.
Edit:
Another thought occurs. It could produce some weird bugs. E.g., you might mistakenly pass a variable to a keep that complements, which will work, but keeps t or nil instead of using a function.
arc> (= foo "bar")
"bar"
arc> (keep ~ssyntax '(a.b a:b nil a b c))
(nil a b c)
arc> (keep ~foo '(a.b a:b nil a b c))
(nil)
arc> (keep ~nil '(a.b a:b nil a b c))
nil
It doesn't seem so bad, but when you have it buried in some definition like