MIN_CHANGE is a privacy leak, since it is an easily observable wallet behaviour. Any output almost equal, but minimally larger than MIN_CHANGE is highly likely the change output of a tx.

Also, MIN_CHANGE is quite high, considering the value of bitcoin.

An easy fix for the second issue would be to just lower the value, but maybe some randomization can be done to also fix the first issue?
CTxOut txout;
    /**
     * Depth in block chain.
     * If > 0: the tx is on chain and has this many confirmations.
     * If = 0: the tx is waiting confirmation.
     * If < 0: a conflicting tx is on chain and has this many confirmations. */
    int depth;
    
    int input_bytes;
    
    bool spendable;
    
    bool solvable;
    /**
     * Whether this output is considered safe to spend. Unconfirmed transactions
     * from outside keys and unconfirmed replacement transactions are considered
     * unsafe and will not be used to fund new spending transactions.
     */
    bool safe;
    
    int64_t time;
    
    bool from_me;
    
    CAmount effective_value;
    
    CAmount fee{0};
    
    CAmount long_term_fee{0};
    COutput(const COutPoint& outpoint, const CTxOut& txout, int depth, int input_bytes, bool spendable, bool solvable, bool safe, int64_t time, bool from_me)