However, having looked at several resource forks, it seems to me that they don't quite follow the layout in "Inside Macintosh". According to the specification, the header of a resource fork contains an offset to the beginning of a resource map, but in all resource forks I've examined, the resource map start a few bytes beyond that offset. The difference ranges from one byte to perhaps 80 bytes or so, but I still haven't found a single file where the offset was correct. There seems to be no way to predict where the resource map really starts. Although it is easy to find it by hand with some educated guesses, I wouldn't like to write any code based on guesswork.
Offhand, my only suggestion is to be sure you're reading the map offset as an integer in big-endian format. If you're running OS/2 on an Intel box you'll have to do an explicit conversion from little-endian.
That's my only immediate suggestion. If you're doing this already, there is probably something else going on.