No, you're right kevlray...
DBlank always reminded us to do exactly that.
This is my thoughts on what is happening in CR that we can't see. CR tries to compare the values, and one is NULL, this throws an error (at least it would in .Net), instead of raising the error to our attention, CR suppresses it and continues on its way. Not very helpful to the report writer, but cuts down on issues of bad data, which I am sure are plentiful. When you check ISNULL first, CR says, look this part is true, let's not check the rest of the statement and continues on its way.
Just something to keep in mind, but you're right, check the ISNULL first.