Floating point calculations on the MCC18 are always a little sketchy. Also, true PID calculations take more processing power than it has. If you really want to implement PID I'd suggest looking at a co-processor. If you're interested, our team used one last year, and we're in the process of writing a guide for how other teams can create their own.
Check out the beginnings of our guide on our website. We're in the process of writing the guide right now, by the end of the month it should be complete so check back often.