The offset problem can be important especially in very dynamic systems. To overcome this, the error is summed over time (integrated) and that sum is multiplied by a gain to be added to the present controller output:
|p(0)||controller output when integration starts|
The main problem with this type of control is the response time. It obviously takes time to to do the adding and then change the control. The situation may have already changed. This is basically a dog chasing its tail problem but can lead to the control system “oscillating” and never get back to zero error.