Couple more observations. It seems that there is a 50% duty cycle between a full on clamp and whatever the pid value should be. This is not a ripple issue as I can change the rate by changing the value of a pause statement at the end of the loop. With no pause, the flash rate is around 1mS. This on off at 50% duty cycle is shown in the above posts showing the memory dumps.

So the question now is, why is there an off period equal to the on period? If the output is higher than the setpoint, we get this 50% cycle, if its lower, we either get a 100% pid value for a very very small window or it clamps to zero and the pid value at a 50% duty cycle.