Here's a general idea of how the code setting system works:
When the failure condition exists (ie, if you IAT was shorted), the computer will set the code as a CURRENT code, and throw a check engine light.
Now suppose that IAT short was intermittent, and the next time you turn the car on, it's not shorted anymore. That IAT code will be flagged as a HISTORY code. It will remain in the ECU as a HISTORY code, but will no longer be a CURRENT code, and the ECU will not turn on the check engine light until/unless the condition is detected again (ie the intermittent short comes back).
A couple things to consider: there are only two ways to clear a history code. One is to pull the battery. Leave the ECU without power for 10 mins and the memory and all codes will be wiped. Two is to cycle the ignition 100 times (or something like that, not sure of the exact number, but it's a lot). If the ignition is cycled 100 times without the computer observing the condition (short) again, it assumes it's fixed and clears the history code.
If you can, have the codes checked agian, and ask them specifically to check for HISTORY codes, not just current ones. If that IAT code was CURRENT 2 days ago, but now it's not even in HISTORY anymore, then that might mean that your ECU is either bad, or is losing power, because even if the IAT is no longer shorted, the code SHOULD be in history (unless you've cycled the ignition 100+ times in 2 days).