you get a wrong return value when you divide by an interval containig 0. For example when you try INTERVAL x; INTERVAL y; INTERVAL z; x.lo = 0.5; x.hi = 1; y.lo = -1; y.hi = 1; z = divIII(x,y); you get z = [-0.500000 , 0.500000]