Hi,
From the manual:
For block accessed devices, like the PIC16F877a and PIC18F452, a complete block must be written at once. This write block size is different for different PIC MCUs

Note that block writes are not actually executed until the end location of the block is written to. If you write to random addresses within a block and neglect to write to the end location, the previously buffered data will not be written and will be lost.
Section 11.3 of the 16(L)F1946 datasheet says that the block size is 32 words.

I suspect that PBP was treating the 1946/1947 as having another block size and that's now been fixed. The fix does not mean PBP handles preserving data within a block for you, just that it now knows the correct block size so that it DOES write the block once you initiate a WRITECODE to the last adress within that block - as per the manual.

With that said, I've never used WRITECODE so this is just my understanding after a bit of reading.

/Henrik.