diff --git a/sdk/src/user.ts b/sdk/src/user.ts index 4c60b0530..356732de8 100644 --- a/sdk/src/user.ts +++ b/sdk/src/user.ts @@ -2728,7 +2728,7 @@ export class User { lpBuffer ); - if (maxPositionSize.gte(ZERO)) { + if (maxPositionSize.gt(ZERO)) { if (oppositeSizeLiabilityValue.eq(ZERO)) { // case 1 : Regular trade where current total position less than max, and no opposite position to account for // do nothing @@ -2750,8 +2750,18 @@ export class User { ); const totalCollateral = this.getTotalCollateral(); const marginRequirement = this.getInitialMarginRequirement(); + + let marginRatio = new BN( + calculateMarketMarginRatio( + market, + currentPosition.baseAssetAmount.abs(), + 'Initial', + this.getUserAccount().maxMarginRatio, + this.isHighLeverageMode() + ) + ); const marginFreedByClosing = perpLiabilityValue - .mul(new BN(market.marginRatioInitial)) + .mul(marginRatio) .div(MARGIN_PRECISION); const marginRequirementAfterClosing = marginRequirement.sub(marginFreedByClosing);