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?