Today I did a calibration test with the thermocouple and on the boiling test it came 3° C short. Strangely on the cold water test (couldn't quite get the water to 0° C), it was over 2° C. I would have expected it to be 3° C short all along the range. However, coming up 2-3° C short was consistent with the room temp it tends to read compared to the reference temp. ALSO, for a BBQ thermostat, a 2-3° C different from actual temperature doesn't matter. Usually we're talking about being OK if your smoker or BBQ temps are between 225°F and 260°F for a low and slow cook. So I plan to edit my Arduino code to compensate.
One thing I am curious about how to solve is the random spike or dip in temperature. I don't want that to affect the fan until the next time a reading is taken. I wonder if I should just expect only a certain delta in temperature within a minute and throw out anything over that range. I'll have to continue to think about it.