If a CTS is bad (or the wiring...) doesn't the PCM switch to open loop and run smoothly? If so, what does it do with the e-fan? Of course it would also throw a code.
If the CTS was bad the engine may not run smoothly. In open loop the PCM depends upon sensor inputs (except O2S inputs) including the CTS input. If the CTS was FUBAR'd the PCM may not go into closed loop at all. The PCM uses the CTS input, along with the other sensor inputs, to determine fuel injector pulse width and ignition timing. At idle, the CTS signal to the PCM is the criteria for the PCM to operate at open loop (cold signal) until the coolant temp reaches operating temp (warm signal) where it switches to closed loop. If the CTS failed in such a way at to signal a cold coolant all the time the PCM would remain in open loop regardless of actual coolant temp, demanding richer mixtures; if the CTS failed in such a way as to signal an excessively high coolant temp all the time (above PCM preset value) the PCM may not switch to closed loop. (?)
I've tricked my PCM into thinking the coolant temp was over 218*F (fan settng) by inserting a 470 Ohm resistor in the CTS connector, which drove the temp indication to near 230*F which turned the electric fan on. The engine ran smoothly but I don't know if it went into closed loop or not because I didn't have my scanner hooked up to monitor it. I was just interested in seeing if my PCM would turn the electric fan on if the peset temp value was exceeded.
I'm thinking that the instrument cluster coolant temperature indicator would reflect exactly what the PCM sees for determining open loop/closed loop activity. Always cold indication, always open loop; always [too] hot indication, always open loop. Between 125*F +/- and 218*F +/-indication, closed loop (at idle of course).
Another option is for the CTS to be reading too high (biased to the high side), and the PCM cycling the fan based on the false high temp readings, which would not throw a code.