You could consider writing/reading the value to/from the EEPROM.
http://arduino.cc/en/Reference/EEPROM
This allows the board to be reset, or even turned off, and retain the value previously set. What you would be doing is saving the value to the internal memory of the Arduino. This is resettable and persistent over a "reboot".
Granted, there is a limited number of writes you can do, but that number is high enough (~100k) that you will probably wear out the fan before the EEPROM sector dies.
Syntax
EEPROM.write(address, value)
EEPROM.read(address)
EEPROM.update(address, value)
For objects:
EEPROM.put(address, data)
EEPROM.get(address, data)