First, I would check rubber. If any of the hoses in the idle air bypass circuit are 'leaky' (hardened with age or cracked), the idle air flow will not be properly metered, and the mixture will suffer. The high idle is usually a compensation to try to keep the engine running. There is also a microswitch activated by throttle return which may need adjustment. Also, the rotary idle air valve could be gummed up and need cleaning. It is under the air cleaner, between intake runners, and is in the same path as all the rubber plumbing in question.