Maybe your intake air temp sensor which plugs into the air box is broken? If the wires are broken, or the sensor goes faulty, the ecu will always think it's around -40'C. It would cause your engine to run a little rich, also would throw a code.

If you could borrow a code reader from someone, or take it to a private mechanic who doesn't charge too much for it, then you'd know for sure what the issue is.