Who cares if it works in the MPLAB SIM or any other SIM.
If a plane test flies well in the simulator, but crashes every time they try to test fly it in real life, which method of testing are you going to believe?

Open up your datasheets, or do a Google search whatever for STACK UNDERFLOW or STACK OVERFLOW.
You explained your problem in your last post, and it almost completely verified what I told you 2 or 3 posts ago.
Meanwhile I found that the chip actually resets everytime while executing the interrupt routine.
Goes to beginning of code and starts executing again.
WDT is OFF and I am not sure why this happening.
Again, how can you RETURN from somewhere you didn't GOSUB to?
Same thing applies with an INTERRUPT. You can't RETFIE (RESUME) without an interrupt. Break out the datasheets and look up RETFIE, then break out your PBP manual and look up RESUME. An INTERRUPT is basically nothing more than a hardware generated CALL (not a GOTO because a CALL remembers where it came from). If you GOTO into your interrupt routine and expect it to come back where it came from, it's probably going to 'come back' to $0000, the RESET vector, whatever you want to call it. But actually, it's not going to do any of that, because you're going to have a STACK UNDERFLOW. You can't pull less than what's not there.
I'm guessing you probably haven't tried rewriting your code yet?
If you would've, you might avoid this problem altogether...