PMIC get/setInputCurrentLimit not setting correctly?

You can try this workaround for the 100 mA to "stick", found here :

void setup() {
    detachInterrupt(LOW_BAT_UC);
    // Delay for up to two system power manager loop invocations
    delay(2000);
    // Change PMIC settings
    PMIC pmic;
    pmic.setInputCurrentLimit(100);
}

I guess in a perfect world, you would use setChargeCurrent(20) and physically switch the Li-COSl2 source occasionally, but the minimum offset is 512 mA (hardware defined IIRC), from Line # 588

* Function Name  : setChargeCurrent
* Description    : The total charge current is the 512mA  + the combination of the
                    current that the following bits represent

I remember a few discussions attempting to perform something similar to your Use Case.
I don't remember the solution(s) though.