It's running rich because the computer is telling it to. Could be any number of inputs, most likely is that the O2 is fouled. Could also be a leak in the exhaust that makes the O2 think the car is running lean. Simpler end of the scale is borken coolant sensor or thermostat making the computer think that the coolant is staying cold too long so the computer tries to help the engine heat up. Could be a leaking injector too.
Also possible that if it's been rich for a long time that you've burnt out the catalytic converter so get that checked.
When you say it passed the ASM test but failed at idle, do you mean it received an ASM test AND a two speed idle?
Maybe you are saying it passed the 25 and 15 mph but failed at idle?
Lots of things can cause issues at idle that might not show up under load.
I'd need to see the rest of the readings to really take a guess though.
Even then, on a car that old it might require a lot of money to fix....