I had the same problem. tested the IACV it checked out fine. the next step was a new computer. I had nothing to loose so i opened up the case and it had corrosion on quite a few parts, used a toothbrush and some alcohol and scrubbed off the corrosion and rinsed with water checked and repeated. check the plug connectors for corrosion also. and thouroughly dried with hair dryer. yeah I know what your thinking, water and circuit boards? what a moron.
You can wash them off just make sure you dry them.
Pluged it back in crossed my fingers and started the car.
it ran perfect, no more idle surge no more throwing codes.
try it as a last resort.