The PercentBad Aggregate defined in Table 45 performs the following calculation:
PercentBad = DurationBad / ProcessingInterval x 100
where:
DurationBad is the result from the DurationBad Aggregate, calculated using the ProcessingInterval supplied to PercentBad call.
ProcessingInterval is the duration of interval.
If the last interval is a partial interval then the duration of the partial interval is used in the calculation. Each Aggregate is returned with timestamp of the start of the interval. StatusCodes are Good, Calculated.
Table 45 – PercentBad Aggregate summary
PercentBad Aggregate Characteristics 

Type 
Calculated 

Data Type 
Double (percent) 

Use Bounds 
Simple (used in DurationBad calculation) 

Timestamp 
StartTime 



StatusCode Calculations 

Calculation Method 
Custom Always Good. 

Partial 
Set Sometimes If an interval is not a complete interval 

Calculated 
Set Always 

Interpolated 
Not Set 

Raw 
Not Set 

Multi Value 
Not Set 



StatusCode Common Special Cases 

Before Start of Data 
Bad_NoData 

After End of Data 
Bad_NoData 

No Start Bound 
No special handing required 

No End Bound 
No special handing required 

Bound Bad 
No special handing required 

Bound Uncertain 
No special handing required 