I was in the middle of writing almost exactly what you said, because
I was interleaving my response with your text :-).

So as not to waste the post, I'll make the point that I seem to recall
there being a thread that discussed why the "!" operators return nil
if they don't change the object

Unfortunately, I can't remember what the rationale was.  Can someone
point me to the thread or just remind me what the gist was?