dim a, b, lnEpsilon, i, p a = SomeInitialValueGoesHere ' whatever your appropriate values are b = 0 ' ??? lnEpsilon = 0.0003 for i = 1 to 5 p = ( a + b ) / 2 if ( FuncX( a ) * FuncX( b ) < 0.0 ) then b = p else a = p if ( abs( b - a ) <= lnEpsilon ) then MsgBox(p,vbOK,"Epsilon") exit for ' leaves for loop endif endif next function FuncX( lnArg ) lnArg = cos( lnArg ) - 2.0 * lnArg ^ 3 - 0.5 return FuncX end functionHTH