In over liquidation, if the liquidatee has USDC-denominated assets for sale, the liquidator can buy the assets with USDC to avoid paying USDC to the liquidatee
In over liquidation, if the liquidatee has USDC-denominated assets for sale, the liquidator can buy the assets with USDC to avoid paying USDC to the liquidatee\\nIn JUSDBank contract, if the liquidator wants to liquidate more collateral than the borrowings of the liquidatee, the liquidator can pay additional USDC to get the liquidatee's collateral.\\n```\\n        } else {\\n            //            actualJUSD = actualCollateral * priceOff\\n            //            = JUSDBorrowed * priceOff / priceOff * (1-insuranceFeeRate)\\n            //            = JUSDBorrowed / (1-insuranceFeeRate)\\n            //            insuranceFee = actualJUSD * insuranceFeeRate\\n            //            = actualCollateral * priceOff * insuranceFeeRate\\n            //            = JUSDBorrowed * insuranceFeeRate / (1- insuranceFeeRate)\\n            liquidateData.actualCollateral = JUSDBorrowed\\n                .decimalDiv(priceOff)\\n                .decimalDiv(JOJOConstant.ONE - reserve.insuranceFeeRate);\\n            liquidateData.insuranceFee = JUSDBorrowed\\n                .decimalMul(reserve.insuranceFeeRate)\\n                .decimalDiv(JOJOConstant.ONE - reserve.insuranceFeeRate);\\n            liquidateData.actualLiquidatedT0 = liquidatedInfo.t0BorrowBalance;\\n            liquidateData.actualLiquidated = JUSDBorrowed;\\n        }\\n\\n        liquidateData.liquidatedRemainUSDC = (amount -\\n            liquidateData.actualCollateral).decimalMul(price);\\n```\\n\\nThe liquidator needs to pay USDC in the callback and the JUSDBank contract will require the final USDC balance of the liquidatee to increase.\\n```\\n        require(\\n            IERC20(primaryAsset).balanceOf(liquidated) -\\n                primaryLiquidatedAmount >=\\n                liquidateData.liquidatedRemainUSDC,\\n            JUSDErrors.LIQUIDATED_AMOUNT_NOT_ENOUGH\\n        );\\n```\\n\\nIf the liquidatee has USDC-denominated assets for sale, the liquidator can purchase the assets with USDC in the callback, so that the liquidatee's USDC balance will increase and the liquidator will not need to send USDC to the liquidatee to pass the check in the JUSDBank contract.
Consider banning over liquidation
In case of over liquidation, the liquidator does not need to pay additional USDC to the liquidatee
```\\n        } else {\\n            //            actualJUSD = actualCollateral * priceOff\\n            //            = JUSDBorrowed * priceOff / priceOff * (1-insuranceFeeRate)\\n            //            = JUSDBorrowed / (1-insuranceFeeRate)\\n            //            insuranceFee = actualJUSD * insuranceFeeRate\\n            //            = actualCollateral * priceOff * insuranceFeeRate\\n            //            = JUSDBorrowed * insuranceFeeRate / (1- insuranceFeeRate)\\n            liquidateData.actualCollateral = JUSDBorrowed\\n                .decimalDiv(priceOff)\\n                .decimalDiv(JOJOConstant.ONE - reserve.insuranceFeeRate);\\n            liquidateData.insuranceFee = JUSDBorrowed\\n                .decimalMul(reserve.insuranceFeeRate)\\n                .decimalDiv(JOJOConstant.ONE - reserve.insuranceFeeRate);\\n            liquidateData.actualLiquidatedT0 = liquidatedInfo.t0BorrowBalance;\\n            liquidateData.actualLiquidated = JUSDBorrowed;\\n        }\\n\\n        liquidateData.liquidatedRemainUSDC = (amount -\\n            liquidateData.actualCollateral).decimalMul(price);\\n```\\n