I should think so.
In the case of the overused gravity down trace, I believe something near enough to the distance is usually already available.
Doubly erroneous. Ignore x2.
// C-Script
var ct_nResult = 0;
var ct_nDist = 0;
var ct_nDistD = 2; // default in ENTITY units
var ct_nMode = 0;
//...
// set ct_nMode ?
vec_set(temp, my.x);
ct_nDist = (my.max_z - my.min_z) * ct_nDistD;
temp.z -= ct_nDist;
ct_nResult = c_trace(my.x, temp, ct_nMode);
ct_nResult += (ct_nResult == 0) * ct_nDist; // without if construct
If ignoring properly, this shouldn't be seen.
distance = c_trace(trace_from, trace_to, trace_mode);
distance += (distance == 0) * vec_dist(trace_from, trace_to); // wasteful