Errata exists for this version of the document.
The DurationInStateNonZero Aggregate defined in Table 34 returns the time Duration during the interval that the Variable was in the one state. The Simple Bounding Values for the interval are used to determine initial value (start time < end time) or ending value (if start time > end time). If one or more raw values are nonGood, they are not included in the Duration, and the Aggregate StatusCode is determined using the StatusCode Calculation (see 5.3) for time based Aggregates.
Duration is in milliseconds. Unless otherwise indicated, StatusCodes are Good, Calculated.
Table 34 – DurationInStateNonZero Aggregate Summary
DurationInStateNonZero Aggregate Characteristics 

Type 
Calculated 

Data Type 
Duration 

Use Bounds 
Simple 

Timestamp 
StartTime 



Status Code Calculations 

Calculation Method 
PercentTime 

Partial 
Set Sometimes If an interval is not a complete interval 

Calculated 
Set Always 

Interpolated 
Not Set 

Raw 
Not Set 

Multi Value 
Not Set 



Status Code Common Special Cases 

Before Start of Data 
Bad_NoData 

After End of Data 
Bad_NoData 

No Start Bound 
Treat the beginning value as Bad_NoData and compute the Aggregate 

No End Bound 
Treat the ending value as Bad_NoData and compute the Aggregate 

Bound Bad 
Use as value and compute the Aggregate as defined 

Bound Uncertain 
Use as value and compute the Aggregate as defined 