It appears that too many mechanics overlook the basics when diagnosing HC failures on today's computerized automobiles. They sell a "tune-up", replace the spark plugs, ignition wires, pcv valve and filters, recheck the car and low and behold the car still fails. "What now coach". They might check for codes and if there are none, they are in big trouble. It is time to go back to the basics. You should be more interested in scan tool data, than in trouble codes. Look at 02 switching rate as well as min, max voltage. It should be toggling between .2 and .8 volts and 3-5 Hz at 2500 rpm.
Enough of 02 and the computer for the moment, you should be looking at the basics first. Check engine vacuum, a pulsating needle indicates a leaking valve while a low reading might indicate a worn or jumped timing belt. Low vacuum at higher rpm's would indicate a restricted exhaust. Carbon build up in the cylinder chamber or on the back of the valves is another common reason for emission failures. Try a good top engine cleaner, Delco x66p carbon cleaner works well if the directions are followed closely. You want to make sure the ignition timing advance is working properly. Over advanced timing will surely raise HC emission levels. Also make sure of the condition of the catalytic converter. Most technicians only look at the cat when the motorist complains of a lack of power. Catalytic converters can be checked in two ways. Temperature, the temperature of the outlet should be approximately one hundred degrees higher than at the inlet Emission levels; run the engine slowly up to 2500 rpm, hold steady while monitoring the 02 level, when the 02 level has bottomed out at it's lowest level (less than 1% with air management disabled) sharply tag the throttle. After the "snap throttle" bring the rpm slowly back to idle, the 02 level should rise and then come down.