Windows 7, 64 bit, Quadro 4000
Broken: 2.79 and following
Short description of error
I have a demo scene with around 3000 different MaterialIDs. When rendering the MaterialID pass and saving it out to OpenEXR Multilayer, and then read back in the file, the IDs between a Float (Half) and Float (Full) image are different. It seems like there are rounding errors. We did not notice such behavior when using a lower number of different IDs so far. I'm not sure if this really is a bug or a technical limitation, but I thought that Float (Half) should be able to store 65536 different IDs per channel no problem.
Exact steps for others to reproduce the error
Download the .blend file. Open it and hit F12 to render. Now, the image nodes should read the rendered EXR files back in. In the Image Editor, hold down the Mouse Button to see the Material Index Values. When previewing the floatHalf one, you'll notice that uneven indicies are mostly missing. The floatFull offers all of them.