Actually it's an MPLAB/Microchip issue.
When you use the OSCCAL, the calibration value is at the last address (3FF) of the memory. The first thing that the program do is to call this address.
But on the chip, the value at the address 3FF is wrong, so the program just continue and as it reaches the end of the memory, it starts again at the beginning, and turn forever like this.
You can see this if in MPLAB after programming the device you read it by using the button Read target device.
To fix this you can go in the menu Debugger -> Settings and in the tab Calibration Memory, you can check the checkbox Allow ICD2 to program calibration memory, and choose the new value.
I've found an other issue is that when I use a project in MPLAB to program the chip, the code on the chip is cut at the address 0x00B.
But if I import my .hex file just in MPLAB, with no project open, and I program my chip, everything is ok.
We have sent a mail to our contact at Microchip to have more information about these issues.
I'll get back to you when I'll have more information.