ga->lasttemp seems to always contain the value for the temperature of the first GPU on the twin GPU card. "temp" always contains the temperature of the GPU that is highest between the two. Therefore, if the 2nd GPU on the card is hotter (and it almost always is on 5970s), it's never going to adjust. ga->lasttemp needs to be modified to contain the value of the highest temp GPU between the two so that they're comparing "apples to apples".
The only reason my one rig is working and the other two aren't is because the 2nd GPU happens to stay a little cooler than the first. The other two have hotter 2nd GPUs (as they should, since the hot air from the first GPU blows across it).
I'd make the change myself, but you really don't want to see my coding "skills". I'm a good reverse-engineer, but I'm a shit coder (as far as keeping things clean goes).