dlasher i fixed mine the same way like you, but there is more nasty bug with DUAL GPU adapters. Fans there are -1.
So if you have 6 adapters with IDs 0 1 2 3 4 5 . 1 of them is DUAL GPU. Lets say last one.
0 1 2 3 4 are physical. ID 5 is the second GPU. ID 5 must be ignored for fan polling. For load, temp etc is fine.
I would love to see a dump of this (with
gpu_snmp.pl fan) if you can provide it. Since my rig only has two dual GPUs, I don't really know what this would look like in a mixed system. My dual 6990's report back two fan set points per card even though there is really only one attached fan.
I can give you few

Second setup 6 physical, 2 dual
* 0. 01:00.0 ATI Radeon HD 5800 Series
1. 02:00.0 ATI Radeon HD 5800 Series
2. 03:00.0 ATI Radeon HD 5800 Series
3. 05:00.0 ATI Radeon HD 5800 Series
4. 08:00.0 ATI Radeon HD 5900 Series
5. 09:00.0 ATI Radeon HD 5900 Series
6. 0c:00.0 ATI Radeon HD 5900 Series
7. 0d:00.0 ATI Radeon HD 5900 Series
* - Default adapter
gpu_snmp.pl fan
100
100
100
100
100
ati_pplib_cmd: execute "get" failed!
100
ati_pplib_cmd: execute "get" failed!
Thanks for the info. I wonder if the issue with your duals has anything to do with the APP/ADL version. With APP 2.5 and fglrx 11.11 on my 6990's the info for the second (non-existent) fan speed setting is reported back and doesn't generate the error yours does.