Hi gregmcc,
Your programmer is fine. See the comparsion of the two files(I make them into two files from your previous posting) you have posted.
What you have read back from the PIC is actually what you have programmed, except with one error which happened while programming and caused offset in address.
Why the error happened I can't tell. Except that the "FF30" at address 0008 just disappeared into thin air and the rest of the code placed into address starting from 0004.
There appears to be a one-bit error difference in the last word but as it is the config word and that the difference location is bit9 which is not implemented in the config word so it is not an error.