If you disable the /MCLR pin then programming becomes 1-off. Or at least, it does with the Velleman programmer. This was a bit irritating, as I changed the config bit on a whim, in case I wanted to use the RA5 as an input sometime. I changed the config word back, found a 16F648A in my parts box, and used that instead! I am assuming other programmers don't have this problem, but googling revealed a number of other K8048 owners who seemed to have fallen for this one.
Next on the list, because my breadboard was getting crowded and pulling the PIC in and out was difficult, I decided to use the ICSP connector on my programmer. I made up a lead with a 5 pin socket connector (which I had bought months before when I anticipated having to do this) and a short peice of ribbon cable with free pins on the end (actually made by cutting lengths of thickish tinned copper wire, soldering them on and putting some heat-shrink sleeve over). I also had to stick a couple of diodes in to isolate the /MCLR pin from the power supply when Vpp is applied, and to isolate the circuits power when the programmer powers up the chip to program it.
This didn't work at first; the programming signals that on the PIC go to RB6 & RB7 where being corrupted by the load on them. I had hopes that since they were going to the cathode of the LEDs via a resistor, they'd be reverse-biased and not effect them. But I imagine that the capacitive load of the wiring, leakage etc are corrupting the signals enough to stop programming working. I removed the resistors that connected the segment drives to the PIC, and the programmer worked as expected. So I've got to design a simple transistor buffer to drive the segments to allow ICSP.
(Diagrams to follow!)