My car started stalling one day every time you'd stop or pushed in the clutch. Manual transmission. Sometimes it would idle fluctuating about 100 rpm's and sometimes it would bounce between 400 and 1000 rpm's. Every once in awhile it would stick at 2000 rpm's that was rare. It would drive just fine up and down the road, just wouldn't idle correctly. Turning on the heater or AC would usually make it do the jumping around. It would only get code PO172 and if you cleared it, then it would take 50 - 80 miles to come back on. Also when decelerating it would buck under 2000 rpm's sometimes.
The first thing to do is clean IAC passage, I fixed the fluctuating rpm's several times by doing that.
This time that wasn't the problem, turned out the front fixed timing chain tensioner broke. You can take the valve cover off and with a long screwdriver and flashlight, if you can wiggle the tensioner back and forth it is broke. 2 bolts hold it so it isn't supposed to move. Also the chain may seem tight when you take the cover off but if you rotate it by hand and if you really want to see if it hasn't shown any looseness yet go backwards a little bit and you'll pick up the slack. Also helps to take the top tensioner off so you can grab the middle of the chain between the 2 camshaft gears. It should stay tight, if you can move it up and down you probably have the same problem.
So if you are having unsolved idle problems, check the front tensioner it could be your problem, it was mine.
Also it isn't the easiest thing to fix, but it wasn't as bad as I thought it was going to be. You do have to take the front of the engine apart to change the timing set. So that is the bad news. The good news is you can save a couple hundred dollars by not changing all the ignition components out trying to solve the mystery idle problem that a lot of people are having.
Hope this helps someone.