I'd say that you have some moisture on the contacts or an intermittent short in the wiring.
check the wiring first by removing it from the overhead consol, and check the resistance, make sure you jiggle the wire with the meter connected the wiring often breaks inside the casing.
Too much rubbing of the headliner against the wire may also make a dead short, visually check the wiring.
Pretty sure it will be one of these.