if (block.GetBlockTime() + STAKE_SPLIT_AGE > txNew.nTime)
txNew.vout.push_back(CTxOut(0, scriptPubKeyOut)); //split stake
this actually looks it will only split the input if it's over the time limit. not under.
else it will combine inputs to the combine threshold
curious. i always thought it was under
this is another version
if (GetWeight(block.GetBlockTime(), (int64_t)txNew.nTime) < nStakeSplitAge)
txNew.vout.push_back(CTxOut(0, scriptPubKeyOut)); //split stake
perhaps i just dont c++ enough