I have added additional info to my original post as FYI.
				
			This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Show posts Menu// This script calculates MTTR, MTBF and perAvailability parameters and stores them in custom attributes
// Initialize some custom attributes the first time.
// Undefined attributes are created by SetCustomAttribute function automatically
CurrentStatus = GetDCIValue($node, FindDCIByName($node, "Status"));
PreviousState = GetCustomAttribute($node, "PreviousState");
if (PreviousState == null)
{ // In the first time, previous state is null
	SetCustomAttribute($node, "PreviousState", CurrentStatus);
	SetCustomAttribute($node, "TimeStamp", time());   
	SetCustomAttribute($node, "NumFailures", 0); 
	SetCustomAttribute($node, "TotalUptime", 0);
	SetCustomAttribute($node, "TotalDowntime", 0);
	return 100;
}
 
// From here the 2nd and subsequent times
NumFailures = GetCustomAttribute($node, "NumFailures");
LastTime = time() - GetCustomAttribute($node, "TimeStamp");
 
// Status is up
if (CurrentStatus == 0)
{
	if (PreviousState != CurrentStatus)
	{   // just changed to up
		// update mttr
		TotalDowntime = GetCustomAttribute($node, "TotalDowntime") + LastTime;
		mttr = TotalDowntime / ((NumFailures == 0) ? 1 : NumFailures) / 3600;   // to prevent division by ze
		SetCustomAttribute($node, "TotalDowntime", TotalDowntime);
		SetCustomAttribute($node, "mttr", mttr);
	}
	else
	{      // still up
		// update mtbf
		TotalUptime = GetCustomAttribute($node, "TotalUptime") + LastTime;
		mtbf = TotalUptime / ((NumFailures == 0) ? 1 : NumFailures) / 3600;   // to prevent division by zero
		SetCustomAttribute($node, "TotalUptime", TotalUptime);
		SetCustomAttribute($node, "mtbf", mtbf);
	}
}
 
// Status is down
if (CurrentStatus == 4)
{
	if (PreviousState != CurrentStatus)
	{   // just changed to down
		// update mtbf
		NumFailures++;
		TotalUptime = GetCustomAttribute($node, "TotalUptime") + LastTime;
		mtbf = TotalUptime / NumFailures / 3600;
		SetCustomAttribute($node, "NumFailures", NumFailures);
		SetCustomAttribute($node, "TotalUptime", TotalUptime);
		SetCustomAttribute($node, "mtbf", mtbf);
	}
	else
	{   // still down
		// update mttr
		TotalDowntime = GetCustomAttribute($node, "TotalDowntime") + LastTime;
		mttr = TotalDowntime / NumFailures / 3600;
		SetCustomAttribute($node, "TotalDowntime", TotalDowntime);
		SetCustomAttribute($node, "mttr", mttr);
	}
}
 
if (CurrentStatus == 0 || CurrentStatus == 4)
{
	// Save previous state and timestamp
	SetCustomAttribute($node, "PreviousState", CurrentStatus);
	SetCustomAttribute($node, "TimeStamp", time());   
 
	// perAvailability section
	TotalUptime = GetCustomAttribute($node, "TotalUptime");
	TotalDowntime = GetCustomAttribute($node, "TotalDowntime");
	perAvailability = TotalUptime / (TotalUptime + TotalDowntime) * 100;
	SetCustomAttribute($node, "perAvailability", perAvailability);
 
	return perAvailability;
}