I’ve spent some time staring at this, and I can’t work out what’s going wrong. Your original packet looks fine, and I see nothing obviously wrong with your source code.
My feeling is that whatever the problem is, it’s not showing up in the details you’ve given. Well, not to me anyway.
If it were me doing this, I’d try to set up the XBees to both be connected to PCs running X-CTU, and send the sample packet that way. By doing that, you’ll be able to see exactly what happens at both ends. If that setup works (and I would expect it to work unless there’s some problem with the device parameter settings), and if bad things still happen when the PIC is used, then it would look like a PIC-related problem rather than an XBee-related one. Either way, the experiment should reveal more in the way of clues.
Well, I’m still puzzled. The data seems to be getting corrupted quite reapeatably. I did wonder about a baud rate mismatch, but I can’t see how that could happen while still leaving the checksums correct.
I guess what I’d suggest now is a nice note to the good folks at Digi support, referring them to this thread and asking whether there are any known issues with this firmware in this area.