by Michael Decipha Ponthieux
Posted: 4-14-2013
Last Updated: 8-17-2016

PERLOAD (LoadX / Load%)

Perload controls fuel, perload is the percentage of total load depending on what value the PRLDSW is set to. If prldsw is 0 then you are scaling load from FN035. FN035 must be dialed in to the curve of the engines maximum load at various rpm's.

I HIGHLY RECOMMEND SETTING PRLDSW=0 IN ALL TUNES. When PRLDSW=0, the ecu calculates perload as a percentage of LOAD using the scaling function FN035. FN035 must have your maximum load values you reach at WOT at any given RPM Naturally Aspirated.

If using the A9L2 Base Calibration, be sure that FN035 contains your maximum N/A (while not in boost) LOAD. You may need to disable boost by removing the supercharger belt or by disconnecting the turbo piping into the intercooler. Once you have boost bypassed, do a WOT run in 2nd gear from idle to redline. At each 1300 rpm interval, note the LOAD.

When FN035 is dialed in properly, PERLOAD will be near 100% at WOT at all RPM's. When in boost PERLOAD will be greater than 100%. This is how boost can be added later after the engine has been tuned with no tune changes required.

If PRLDSW=1, then PERLOAD=LOAD << disables FN035 (not recommended)

PCT_Load is inferred from the failure management lookup tables mainly FN1036A. (This is not present in the foxbody and older ecu's)

if PRLDSW=2 be sure that the ARCWOTCOR scalar is maxed out at 2.00 while dialing in the tune. ARCWOTCOR is a multiplier on PCT_LOAD (inferred load) which comes primarily from the FN1036A table If you hadn't dialed in the PCT_LOAD tables and ARCWOTCOR is not set to 2.00, then you will go lean at WOT. After you have dialed in your tune and FN1036A, be sure to set ARCWOTCOR to no higher than 1.3

When changing PRLDSW=0, the following are the MINIMUM changes required.
PID (GUFX)PID (CBAZA)ParameterOld ValueNew ValueComments
FN320AFN320AO/L Perload ThresholdY-axis: all 95-120This function forces open loop based on PERLOAD
FN035FN035Peak Load ScalingWOT load with boost bypassed (n/a - no boost)
**DNE**FN1360Stabilized Fuel TableThis table can be disabled by setting ECTSTABL=255 and ECTSTABLTIM=255.
**DNE**FN337O/L Warm ThresholdY-Axis: all 200This function forces open loop only when the engine is warm.
THBP2FN513WOT TP ThresholdY-Axis: all 2.0vThis function forces open loop based on throttle position.
FN1307FN1362Base Fuel Table0.805 > 105 perload
0.875 at 105 and 90 Perload
1.000 at 75 perload and less
The base fuel table. (AFR the ecu is commanding)

**DNE** = does not exist in older strategies


Load controls spark, load is calculated by the MAF (airmass) and SARCHG (engine size "CID") load is ford's equivalent to VE (volumetric efficiency). A bone stock E7 headed SBF 5.0L 302ci should reach a maximum peak load of ~78 at approximately 4k rpm, with LOAD reducing above and below peak tq.

FN1360 - Stabilized Fuel Table

When PERLOAD=1 (LOAD) you cannot allow for different lambses at different loads per RPM, but FN1360 will allow you to, the catch is that FN1360 is ONLY ACTIVE after the engine is warm (ect exceeds ECTSTABL).

So basically if you disable FN035 by setting PRLDSW to 1, you are basically undoing it with the FN1360 table. However, since the FN1360 table ONLY gets used AFTER the engine is warm you CANNOT have efficient COLD fueling control. You WILL have either excessive enrichment or excessive lean out since the base fuel table FN1306 is only scaled by ECT (engine coolant temperature) and PERLOAD. Also worth noting is that startup enrichment fuel will be REMOVED when the Stabilized ECT flag is set to allow FN1360.

For example:
A stock pushrod 302 will only reach ~55 load up to about 1200 rpm, ~65 load below 3k and ~75 at about 4k then reduce back down to about ~60 load at 6k rpm. So with PRLDSW=1 you WILL have to force open loop before 55 load and set the base fuel table so that at 55 load your at least as rich as 0.875 Lambse, however this is very inefficient since ~55 load at crusing rpms (~2200 rpm) will have full enrichment thus I recommend setting PRLDSW to 0 in all tunes. Most 94+ tunes have PRLDSW=2 in stock tunes, I recommend switching it to 0.

Remember: PERLOAD only controls fuel and LOAD controls spark.

The "best" option for PERLOAD is to use Load Scaling from FN035 by setting the load scaling switch PRLDSW to 0. If PRLDSW is not set to 0 in your tune currently, you WILL have to adjust the fuel tables.


Many people mistakenly confuse scaling load with scaling airflow, the two are completely different.

Scaling airflow is done to compensate for a high flow MAF. If you have a MAF that flows over 1,750 kg/hr for EEC-V or 2,350 kg/hr for EEC-IV you will have to scale airflow.

In any calibration make sure the MAF flow DOES NOT exceed either 1,750 or 2,350 kg/hr (even lower at 1,000 kg/hr or 36#/min for some v6 and 4 cyl strategies) although you can put a higher value in the tune, the ecu cannot calculate it. So you would compensate by scaling airflow, to do so you must do the following:


For example:
Lets say you have a PMAS meter calibrated for 60 lb injectors.
The PMAS "60" for a foxbody has a maximum measureable airflow of 3188 kg/hr, 3188 / 1500= 2.125, 2.125 is your SCALING PERCENTAGE.

you will now apply that SCALING PERCENTAGE to:
PID (GUFX)PID (CBAZA)ParameterOld valueNew ValueDescription
SARCHGSARCHGCID scalar302142This would normally have the value for your cubic inch displacement like 301.08
SARCHG and MAF flow is how LOAD is calculated
Skipping this step is going to cause engine damage with excessive ignition timing due to low load
FN036FN036MAF Transfer16v=318816v=1500by scaling your ACTUAL maf transfer your measuring a percentage of actual airflow
ALOSLALOSLInjector Low Slope6028.23now reduce your ACTUAL injector slopes and breakpoint by your scaling percentage to bring fueling back to where it was
REMEMBER, a smaller injector sprays LONGER than a larger injector for the same AFR
Reducing the slope will RICHEN the mix to compensate for reducing the MAF transfer which LEANED the mix
AHISLAHISLInjector High Slope6028.23
FN389FUEL_BRKPTInjector Breakpoint0.00001000.0000047
**DNEAIR_MAN_VOLManifold Volume41.88reduce the manifold volume scalar by your scaling percentage to aid in transients (this is not available in older ecu's)
**DNEFN1358Inferred Airmassapply your scaling percentage to reduce all cells on the bottom 3 rows
**DNEFN1036AFailed MAF Tableapply your scaling percentage to reduce all cells in this table, this table is the PCT_Load table
**DNE = does not exist in the older strategies.
NOTE: Injector voltage offsets DO NOT GET SCALED
Since we are measuring the SCALING PERCENTAGE of the MAF and the SCALING PERCENTAGE of the injectors we haven't changed fueling because the ratio of air to fuel is equivalent, but yet we don't exceed the ECU's maximum airmass clip of 1,750 or 2,350 kg/hr and now we won't split a V8 into two inline 4s. However, this doesn't exactly work out in all cases, often times slight adjustments to the injector slopes and/or MAF curve are necessary to get fuel dialed back in.

Scaling LOAD - 200 LOAD CLIP

The older ford ECU's can only calculate up to 200 LOAD, once the ecu reaches 200 LOAD it cannot calculate further. This does not apply to the CAN-BUS ECU's that can be modified to calculate up to 400 LOAD. When the ECU reaches its highest calculatable LOAD it may cause the ecu to reset, enter crank mode, etc.. undesireable results. To compensate for clipping LOAD you must increase the SARCHG value (CID scalar) so LOAD is below 200. I typically never let LOAD get above 180 on cars i tune that way you still have some cushion if they decided to turn it up. Keep in mind when doing this you'll need to adjust FN035 and the spark tables values so your not demanding excessive timing and a lean mix under boost. You can reduce LOAD by dividing your maximum load by your new desired maximum load. lets say your reaching 175 load at WOT and you want it to be at 140. 175 / 140 = 1.25 If you multiply SARCHG by that (lets say sarchg is at 142) 142 * 1.25 = 177.5 , when you INCREASE sarchg to 177.5 your new load at WOT will be your desired 140 load.

Scaling tables for BOOST (greater spark control)

Our beloved eec's don't have a MAP sensor so we can't adjust timing based on boost ...right? WRONG!!

Our eec's for the most part are MASS AIR, you can scale the tables to retard timing based off of boost pressure

The only reason you would rescale the tables is to get more control of fuel and spark so you can demand a different value at high loads that a stock engine doesn't need to have access to. Henry didn't scale tables for high loads for the simple fact that the stock engine can't reach those loads. Typically a stock 302 only reaches ~75 load around 4k, even lower at 60 load below about 2k rpm.

So for example, let say at WOT your setup with 6 psi of boost put you at 120 load, with 10 psi your at 150 load and at your max boost of 18psi your at 180 load, you can rescale the tables so you can control timing and fuel at these boost levels.

Now this is all assuming the wot spark functions are disabled, if your strategy doesn't have that hack added to it you can set the tps breakpoint for WOT to its maximum value so the WOT flag will never be set. The only downfall is that by doing that you loose the WOT multiplier functions, but its not very common that you would need to use those functions anyway, just keep that in mind if you go that route so when you look at your logs your APT (throttle state) will never reach 1 (1=WOT). The WOT spark functions were probably incorporated in the ecu's as a safety measure in the older ecu's, but ideally you don't want to pull spark just because the pedal is through the floor, you want to 'ramp' spark which will increase torque, throttle response, fuel economy, etc... which is how the newer ecu's control spark from the factory, plus it allows you to add or remove boost without having to change tunes.

NOTE: With the WOT breakpoint set to maximum, while cranking with the throttle pedal to the floor to normally activate the flood-clear "kill injector" mode, it will not function since the ecu will not recognize WOT.

I recommend everyone to use only one spark table just for the sake of keeping everything simple, the only people that may want to interpolate between the lug tables would be those who have a very high compression engine running low octane fuel or those advanced tuners with manuals behind turbo's trying to decrease spool after a shift. Most 94 and later ecu's use the least amount of calculated spark at any given time if you have a newer ecu you can set all other spark tables to high values ~60 and just use the borderline knock table as your primary means of spark (don't forget about the multiplier tables and functions), if you have a guf ecu then just set the hack scalar for spark inhibit to sealevel only or just download the
A9L2 Base Tune

For more ignition timing information visit the TIMING Write Up which includes an MBT reference chart Found HERE on to the good stuff...

Nomalizing Scaling Functions

FN904A is the Sealevel Spark Table, the Y-Axis is Normalized Load Scaled from FN071
So off to function FN071 we go

FN071 - Stock A9L:

As always the X-Axis top most and bottom most values should never be changed under any circumstances in any function. 200/400 is the max LOAD the ecu can calculate and 0 is the least LOAD, the value in the Y-Axis is the row for the table its scaling.

I know to some that's got to be confusing so I'll break it down and make it nice and easy to understand by going through it

If you cruise back up or if you have a high enough resolution display setting on your monitor you'll see that i put the row numbers next to the sealevel load table scaling so you can understand where each point is referencing, but if you don't,

here it is again in bold, the values on the left are the Y-axis input for the Spark Sealevel Table

75 (row 7)
60 (row 6)
50 (row 5)
40 (row 4)
30 (row 3)
20 (row 2)
10 (row 1)
5 (row 0)

Which is the same thing as this

We'll take it from the bottom, from the load scaling of FN701, anything from 0 to 5 load is using row 0, then 10 load is right there in the function at row 1 so no interpolation is being done, the next value is 60 at row 6, so the ecu is interpolating everything in between. 60 -10 = 50, 6 - 1 = 5, 50 / 5 = 10 per row, so row 2 is row 1 + 10, row 3 is row 2 + 10, and so on, row 7 is 75 to 200. So everything from 75 load and greater (up to) 200 load uses row 7. This is how all scaling functions 'function' in the ecu.

Now its up to you to change your spark scaling to better suit your needs, pretty much everything 30 load and less (actual unscaled load) can use the same timing normally, at CT and Idle, spark is being called out from FN111, so everything below about 20 load will just about never be used. With that knowledge right off the bat you can free up 3 rows right there which may be enough to do what you need to. if not then you can adjust accordingly. I highly recommend the spark scaling I have in the A9L2 and T4M2 Base Tunes for all calibrations.

Now with the original load scaling i made for my theoretical engine example, i would scale the spark table to something like this:

Which made my spark table look like

Be sure you save the calibration when changing any scaling function for those changes to be applied, else it will show the scaling it was loaded with. Don't forget YOU ALSO NEED TO ADJUST ALL THE TABLES AND FUNCTIONS THAT THE NEW SCALING CHANGES. LOOK IN THE COMMENTS FOR AN IDEA OF WHERE TO ADJUST EVERYTHING ELSE.

You can now plug in the timing you want at each point of boost and enjoy the new powah and voila! Now we have table scaling for boost.

Here is a quick example of what an optimized timing table might look like just to give you an idea:
A9L2 FN904A

Load is going to vary per setup, load is based off airflow and CID, since we all run different MAF's and using the maf to dial in fuel is a typical method. Load can be anywhere at any time on any setup, can't really say where its going to be unless you have a flowed or known MAF curve.

See the
Spark Write Up for more details on ignition timing. The MBT Reference Chart can be found on the home page under reference.

Return Home
Jump to Forum - EFIDynoTuning LC - New Orleans, LA