Low-level I2C question -- ACK generation

I'm looking through the datasheet and the Arduino library code, and it seems to me that the AVR hardware is set up such that (in receive mode) you have to tell the TWI interface whether to ACK the next byte before you see it. I.e., there doesn't appear to be an event fired AFTER receiving a byte of data, but BEFORE sending ACK (while the TWI hardware holds SCL low.)

Am I right? Is typical I2C byte transfer etiquette that you go ahead and accept every byte, without verifying the content is acceptable first? I'm thinking of cases where you're accepting a value that might only be valid between 0-99 and you receive 150, for e.g. It seems like you would want to throw a NACK to signify the data is invalid. But it looks like the implementation forces you to accept the data byte and deal with validity communication on a higher level, maybe by returning a message in another transaction, or just silently discarding the request.

Thoughts?