PROGMEM: storing and retrieving unsigned long data

Shouldn't you be using pgm_read_dword_far instead?