The spring mechanism on the sun visors is terrible and after a few uses the visor will not snap into the "up" position. This leaves the visor flopping about 1inch in the up position.
This fix is tedious but it works. You fabricate a plastic holder for some magnets in the overhead shelf and install a metal screw in the visor. The neodymium magnets are strong enough to hold the visor if you stack two magnets (this increases the magnetic field) and use a screw with a large and flat head.
Here are the basic steps.
I used the handle from a Home Depot brush because the size was perfect and the plastic was relatively soft. I used a Dremel to shape the plastic into an insert for a slat in the overhead shelf. I did a lot of grinding and test fitting to get it right. The plastic piece inserts into the slot from the bottom and an aluminum (or other material) bracket screws into the top to hold it. I used neodymium magnets and stacked two into the plastic insert. The depth of the magnets is important.
Finally, a small screw is installed in the visor. Adjust the magnet and screw depth so the visor fully retracts into the up position and makes magnetic contact. If the gap is too big the screw and magnets will rattle. The screw head is about the same diameter as the magnet.
I bought the magnets at Home Depot also.