A system for controlling an insulin infusion device for a user, the system comprising: means to receive past values of manual boluses of insulin delivered to the user; a processor architecture comprising at least one processor device; a memory associated with the processor and storing processor executable instructions which when executed by the processor architecture: a) compute from said past values a current insulin on board value representing an estimate of active insulin in the body of the user attributable to said manual boluses; b) calculate an IOB rate in accordance with the expression: IOBRate n = | GainIOB × IOB n, IOB n > MinIOB | 0, IOB n ≤ MinIOB; wherein: GainIOB is an IOB decay rate; and MinIOB is a minimum IOB value; c) determine an adjusted insulin infusion rate in accordance with the expression: AdjustedRate n = max 0, PIDRate n − IOBRate n; wherein: AdjustedRate(n) is the determined adjusted insulin infusion rate; PIDRate(n) is the obtained uncompensated insulin infusion rate calculated in accordance with a proportional-integral-derivative insulin feedback (PID-IFB) control algorithm; and d) select a final insulin infusion rate for the insulin infusion device, wherein the selecting selects either the determined adjusted insulin infusion rate, the uncompensated insulin infusion rate, or a current basal rate as the final insulin infusion rate, wherein selecting the final insulin infusion rate is in accordance with the expression: FinalRate n = | max Basal; AdjustedRate n, PIDRate > Basal | PIDRate n, PIDRate ≤ Basal wherein: FinalRate(n) is the selected final insulin infusion rate; and Basal is a current basal rate maintained by the insulin infusion device for the user corresponding to a user's insulin requirement to maintain a fasting blood glucose level. means to receive past values of manual boluses of insulin delivered to the user; a processor architecture comprising at least one processor device; a memory associated with the processor and storing processor executable instructions which when executed by the processor architecture: a) compute from said past values a current insulin on board value representing an estimate of active insulin in the body of the user attributable to said manual boluses; b) calculate an IOB rate in accordance with the expression: IOBRate n = | GainIOB × IOB n, IOB n > MinIOB | 0, IOB n ≤ MinIOB; wherein: GainIOB is an IOB decay rate; and MinIOB is a minimum IOB value; c) determine an adjusted insulin infusion rate in accordance with the expression: AdjustedRate n = max 0, PIDRate n − IOBRate n; wherein: AdjustedRate(n) is the determined adjusted insulin infusion rate; PIDRate(n) is the obtained uncompensated insulin infusion rate calculated in accordance with a proportional-integral-derivative insulin feedback (PID-IFB) control algorithm; and d) select a final insulin infusion rate for the insulin infusion device, a) compute from said past values a current insulin on board value representing an estimate of active insulin in the body of the user attributable to said manual boluses; b) calculate an IOB rate in accordance with the expression: IOBRate n = | GainIOB × IOB n, IOB n > MinIOB | 0, IOB n ≤ MinIOB; wherein: GainIOB is an IOB decay rate; and MinIOB is a minimum IOB value; GainIOB is an IOB decay rate; and MinIOB is a minimum IOB value; c) determine an adjusted insulin infusion rate in accordance with the expression: AdjustedRate n = max 0, PIDRate n − IOBRate n; wherein: AdjustedRate(n) is the determined adjusted insulin infusion rate; PIDRate(n) is the obtained uncompensated insulin infusion rate calculated in accordance with a proportional-integral-derivative insulin feedback (PID-IFB) control algorithm; and d) select a final insulin infusion rate for the insulin infusion device, AdjustedRate(n) is the determined adjusted insulin infusion rate; PIDRate(n) is the obtained uncompensated insulin infusion rate calculated in accordance with a proportional-integral-derivative insulin feedback (PID-IFB) control algorithm; and d) select a final insulin infusion rate for the insulin infusion device, FinalRate(n) is the selected final insulin infusion rate; and Basal is a current basal rate maintained by the insulin infusion device for the user corresponding to a user's insulin requirement to maintain a fasting blood glucose level.