Hes right. Any time the engine runs sluggish below a certain rpm then the ECU WILL send a signal to the transmission to NOT go into 4th gear so as to not over rev the engine. For me it was a bad Map sensor at $80. My code was #0107. It could be most any code though. A better description of this is on Answers.com under "Flash hold light" page 2.