I decided to cheat and add one, this will never report as 0 as well but it will report False and not fail when the cpu average is 0...
The graph is the actual value so this should solve all the issues.
I am also modifying cache and negative cache as usual.
if(array_size(oid_column("1.3.6.1.4.1.9.2.1.57", 10 ,29)), oid("1.3.6.1.4.1.9.2.1.57.0", 10, 29)+1 ,"False")
ciscoCPUa1.png
And the probe...
if(Cisco_CPU_a()<>"False",if(Cisco_CPU_a() < 50, "", concatenate("Warning: high CPU =", Cisco_CPU_a(), "%")), "Failed read")
CiscoCPU1.png
If you want to use the function in a label you can just subtract 1 from it.
CPU: [Cisco_CPU_a()-1]
FINALLY