double dmod(double top, double bottom) { long value; double out; if (bottom != 0.0) { value = (long) top/bottom; out = top - ((double) value)*bottom; } else { out = top; } return out; }