You can instruct the parser to stop when it encounters a specific iff chunk by using the function stopchunk(): error = StopChunk (iff, ID_ILBM, ID_BODY); When the parser encounters the requested chunk, parsing will stop, and parseiff() will return the value zero. the stream will be positioned ready to read the first data byte in the chunk. You may then call readchunkbytes() or readchunkrecords() to pull the data out of the chunk. You may call stopchunk() any number of times for any number of different chunk types. If you wish to identify the chunk on which you've stopped, you may call currentchunk() to get a pointer to the current contextnode, and examine the cn_Type and cn_ID fields. Using stopchunk() for every chunk, you can parse iff files in a manner very similar to the way you're probably doing it now, using a state machine. However, this would be a terrible underuse of IFFParse.