Both CoinGrinder and SRD create a change output, however they disagree on what change output is too small.
Consider SRD selection, which adds CHANGE_LOWER to the target value and in so doing, prevents a selection that is less than CHANGE_LOWER ref
target_value += CHANGE_LOWER + change_fee;
However, CoinGrinder does not add CHANGE_LOWER ref
const CAmount total_target = selection_target + change_target;
I believe the correct behavior is for CoinGrinder to add CHANGE_LOWER to the total_target, like so:
const CAmount total_target = selection_target + CHANGE_LOWER + change_target;