As Paulcet said, you may be using bigger data types than you need in some places but, I am not sure either so I will leave that for someone else.
However, here is a part of your code that needs fixed.
if (((Lean >= 2)) && ((unsigned long)(millis() - LeanTime) > 250)) {//Check if lean for more than 250ms (.25 seconds) and lean more than 2 loops
Cut = 1; //cut boost if too lean for too long
With this, because millis() is already assigned a data type.
if ((Lean >= 2) && (millis() - LeanTime) > 250) {//Check if lean for more than 250ms (.25 seconds) and lean more than 2 loops
Cut = 1; //cut boost if too lean for too long
}
You may want to consider using >= 250 as you will have to wait another loop if your millis() - Leantime equals 249 or less.
Also, in the terms of engines, wideband Air/Fuel sensors are fairly slow. Therefore, give yourself a wide margin when you are testing your ideas on your engine.