Using a variable as array index - Optimization Bug?
I believe problem is in PROGMEM attribute which saves const array into flash memory. To get values you need a memcpy_P() or so. For direct access try avoiding PROGMEM attribute. pwmtable_10[fade] gets random RAM value.

See http://www.nongnu.org/avr-libc/user-manual/pgmspace.html