    function _repay(uint32 poolId, address nft, uint256 tokenId) internal virtual {
...
        // compute fine value
        if (vars.remainAmount >= sd.unstakeFine) {
            vars.remainAmount = vars.remainAmount - sd.unstakeFine;
        } else {
            vars.extraAmount = vars.extraAmount + (sd.unstakeFine - vars.remainAmount);
@>        // missing clear  vars.remainAmount = 0
        }

@>      sd.remainYieldAmount = vars.remainAmount;
...

        // send remain funds to owner
        if (sd.remainYieldAmount > 0) {
@>          underlyingAsset.safeTransfer(vars.nftOwner, sd.remainYieldAmount);
            sd.remainYieldAmount = 0;
        }
    function _repay(uint32 poolId, address nft, uint256 tokenId) internal virtual {
...
        // compute fine value
        if (vars.remainAmount >= sd.unstakeFine) {
            vars.remainAmount = vars.remainAmount - sd.unstakeFine;
        } else {
            vars.extraAmount = vars.extraAmount + (sd.unstakeFine - vars.remainAmount);
+           if(msg.sender != botAdmin) {
+               vars.remainAmount = 0;
+           }
        }

        sd.remainYieldAmount = vars.remainAmount;
...

        // send remain funds to owner
        if (sd.remainYieldAmount > 0) {
            underlyingAsset.safeTransfer(vars.nftOwner, sd.remainYieldAmount);
            sd.remainYieldAmount = 0;
        }
