I would remove the > 0.0 test, and simply pass `numeric_limits<double>::max()` for lights (which don't support the light near start value).