diff --git a/contracts/mainnet/connectors/aave/v3/main.sol b/contracts/mainnet/connectors/aave/v3/main.sol index 91422a6e..afcf8a6b 100644 --- a/contracts/mainnet/connectors/aave/v3/main.sol +++ b/contracts/mainnet/connectors/aave/v3/main.sol @@ -263,7 +263,13 @@ abstract contract AaveResolver is Events, Helpers { TokenInterface tokenContract = TokenInterface(_token); - _amt = _amt == uint256(-1) ? getPaybackBalance(_token, rateMode) : _amt; + if (_amt == uint256(-1)) { + uint256 _amtDSA = isEth + ? address(this).balance + : tokenContract.balanceOf(address(this)); + uint256 _amtDebt = getPaybackBalance(_token, rateMode); + _amt = _amtDSA <= _amtDebt ? _amtDSA : _amtDebt; + } if (isEth) convertEthToWeth(isEth, tokenContract, _amt); @@ -351,9 +357,17 @@ abstract contract AaveResolver is Events, Helpers { TokenInterface tokenContract = TokenInterface(_token); - _amt = _amt == uint256(-1) - ? getOnBehalfOfPaybackBalance(_token, rateMode, onBehalfOf) - : _amt; + if (_amt == uint256(-1)) { + uint256 _amtDSA = isEth + ? address(this).balance + : tokenContract.balanceOf(address(this)); + uint256 _amtDebt = getOnBehalfOfPaybackBalance( + _token, + rateMode, + onBehalfOf + ); + _amt = _amtDSA <= _amtDebt ? _amtDSA : _amtDebt; + } if (isEth) convertEthToWeth(isEth, tokenContract, _amt); diff --git a/contracts/mainnet/connectors/spark/main.sol b/contracts/mainnet/connectors/spark/main.sol index 6295641d..7422a8b3 100644 --- a/contracts/mainnet/connectors/spark/main.sol +++ b/contracts/mainnet/connectors/spark/main.sol @@ -262,7 +262,14 @@ abstract contract SparkConnector is Events, Helpers { address _token = isEth ? wethAddr : token; TokenInterface tokenContract = TokenInterface(_token); - _amt = _amt == uint256(-1) ? getPaybackBalance(_token, rateMode) : _amt; + + if (_amt == uint256(-1)) { + uint256 _amtDSA = isEth + ? address(this).balance + : tokenContract.balanceOf(address(this)); + uint256 _amtDebt = getPaybackBalance(_token, rateMode); + _amt = _amtDSA <= _amtDebt ? _amtDSA : _amtDebt; + } if (isEth) convertEthToWeth(isEth, tokenContract, _amt); @@ -350,9 +357,17 @@ abstract contract SparkConnector is Events, Helpers { TokenInterface tokenContract = TokenInterface(_token); - _amt = _amt == uint256(-1) - ? getOnBehalfOfPaybackBalance(_token, rateMode, onBehalfOf) - : _amt; + if (_amt == uint256(-1)) { + uint256 _amtDSA = isEth + ? address(this).balance + : tokenContract.balanceOf(address(this)); + uint256 _amtDebt = getOnBehalfOfPaybackBalance( + _token, + rateMode, + onBehalfOf + ); + _amt = _amtDSA <= _amtDebt ? _amtDSA : _amtDebt; + } if (isEth) convertEthToWeth(isEth, tokenContract, _amt);