To calculate the consumption, the processed data is used (it is done on the **Data preparation **and **Filtration** steps).

Ellipsis (**...**) substitutes **Unit properties **→ **Sensors** →** FLS properties** when indicating the option paths.

Two options and a special case are closely connected with this step:

- Option: Replace invalid values with math consumption;
- Option: Exclude thefts from fuel consumption;
- Special case: Filling/theft is sliced with one of the interval frontiers.

## Replace invalid values with math consumption

... → General settings → 'Calculate fuel consumption by sensor' → 'Replace invalid values with math consumption'

In the case of values falseness, they are replaced with the values calculated mathematically. The mathematical calculation uses the data indicated in the properties of ignition, relative and absolute engine hours sensors (the **Consumption, l/h** option) and the value of the engine efficiency sensor.

Algorithm:

Let Vinit be the initial volume for the interval (what interval is taken is defined in the specified report template), Vfinal — the final volume. Then the difference is calculated between them with respect to fillings volume, i. e. Vinit – Vfinal + Vfill. In case the calculated value is equal to or greater than zero, the interval is marked as correct. But if the result value is negative, the consumption is treated as falsy and math consumption takes place.

## Exclude thefts from fuel consumption

Reports → Report template properties → Settings → General → 'Exclude thefts from fuel consumption'

This option defines whether a theft is considered a consumption in calculations of various kinds of indicators. Keeping this option switched on is valuable when ignoring deviations because of the detected thefts.

Switch it off when a discharge is authorized, for instance, agriculture vehicles are filled with refueller and the user wishes to know the total turnover of spent fuel during the specified period of time.

## Special case: A filling/theft is sliced with one of the interval frontiers. How is a filling/theft detected?

Let us consider the case on the example of filling. Assume we have sliced the filling with the initial frontier of the interval. As described in the **How a filling is processed** section, a filling timestamp is defined dynamically according to the unique case. Since we have sliced the filling with an interval, the second message of the interval becomes the initial filling message and it informs that the fuel level has grown compared to the previous value (the first message is the reference used to calculate the delta (**d=Vcurr - Vprev**) for the second message, it cannot be calculated for the first message because of the absence of the previous one).

The filling final message remains the same.

The filling volume declines compared to the unsliced filling reference (because of the initial message shifts to the right).

The filling timestamp might hold the position/shift to the right because it all depends on whether the message, whose timestamp is regarded as an unsliced filling timestamp, is taken into account when calculating the time of the filling. If it is taken, the filling time does not change.