Stock Grants
Getting Started
Stock Grants
Analysis Types
Perspectives
Support
MSOL Cap
Scenarios
© 2026 EquityDivorce
Privacy Policy

The MSOL Cap

MSOL stands for Marital Standard of Living: the post-tax annual figure California family courts use as the benchmark for spousal support. The lower-earning spouse should be brought up to MSOL by support — not past it, since the order shouldn’t fund a lifestyle the marriage didn’t actually establish.

The MSOL Cap section in this app overlays that ceiling on top of whatever the bonus tables (xspouse-style lookups) would otherwise produce for spousal support. Bonus tables don’t know about MSOL, so without a cap they can transfer well past the recipient’s marital lifestyle. The cap reins that in.

Two things the cap deliberately does not do:

  • Touch child support. CS is governed by FC §4055 and isn’t subject to MSOL. It flows uncapped, signed (reversing direction in years where the payee’s table dominates).
  • Lock direction to the configured payor / payee. Those labels are just expected directions. In any year, the actual recipient is whoever is below MSOL after CS — sometimes the configured payor. The cap binds against whoever’s receiving, regardless of label.

Variables

M=configured annual MSOL (post-tax)M = \text{configured annual MSOL (post-tax)}
M=M×months active12(prorated for partial years)M' = M \times \tfrac{\text{months active}}{12} \quad \text{(prorated for partial years)}
P,  E=payor / payee post-tax income for the yearP,\; E = \text{payor / payee post-tax income for the year}
payerCs,  payerSs,  payeeCs,  payeeSs=bonus-table outputs\text{payerCs},\; \text{payerSs},\; \text{payeeCs},\; \text{payeeSs} = \text{bonus-table outputs}
netCs=payerCspayeeCs(signed, uncapped)\text{netCs} = \text{payerCs} - \text{payeeCs} \quad \text{(signed, uncapped)}
ssUncapped=payerSspayeeSs(signed)\text{ssUncapped} = \text{payerSs} - \text{payeeSs} \quad \text{(signed)}

Two derived positions: PP' and EE', the parties’ post-tax incomes after CS has moved between them. Because CS is calculated and paid first, the SS gap is evaluated against these post-CS positions, not the pre-CS ones.

Post-CS positions
P=PnetCsP' = P - \text{netCs}
E=E+netCsE' = E + \text{netCs}

Worked example: P=$300,000P = \$300{,}000, E=$100,000E = \$100{,}000, netCs=$15,000\text{netCs} = \$15{,}000. After CS moves, the payor is at P=$285,000P' = \$285{,}000 and the payee at E=$115,000E' = \$115{,}000. The SS cap reads against E=$115,000E' = \$115{,}000.

The cap formula

The principle: when the cap binds, the recipient walks away with the full MSOL gap in hand — meaning their post-tax position lands exactly at MSOL after their own bonus-table obligation has been netted out. They don’t receive the gap only to send a chunk back.

Forward direction (ssUncapped ≥ 0 — configured payee is the recipient)
gap=max(0,  ME+payeeSs)\text{gap} = \max\bigl(0,\; M' - E' + \text{payeeSs}\bigr)
cappedPayorSs=min(payerSs,  gap)\text{cappedPayorSs} = \min\bigl(\text{payerSs},\; \text{gap}\bigr)
netSs=max(0,  cappedPayorSspayeeSs)\text{netSs} = \max\bigl(0,\; \text{cappedPayorSs} - \text{payeeSs}\bigr)
Reverse direction (ssUncapped < 0 — configured payor is the recipient)
gaprev=max(0,  MP+payerSs)\text{gap}^{rev} = \max\bigl(0,\; M' - P' + \text{payerSs}\bigr)
cappedPayeeSs=min(payeeSs,  gaprev)\text{cappedPayeeSs} = \min\bigl(\text{payeeSs},\; \text{gap}^{rev}\bigr)
netSs=min(0,  payerSscappedPayeeSs)\text{netSs} = \min\bigl(0,\; \text{payerSs} - \text{cappedPayeeSs}\bigr)

Same logic mirrored: cap the would-be payor’s gross payment at a gap that already includes the recipient’s own SS obligation, then net that obligation out. When the cap binds, gross payment = (Mrecipient’s PT)+recipient’s own SS(M' - \text{recipient's PT}) + \text{recipient's own SS}, and the cash actually delivered = Mrecipient’s PTM' - \text{recipient's PT} — exactly the gap to MSOL.

The trailing max(0,)\max(0, \cdot) / min(0,)\min(0, \cdot) clamps prevent the cap from flipping the natural direction at very low MM: a tight MSOL shouldn’t make a forward- natural year suddenly run reverse just because the gap collapsed to zero.

How the cap behaves as MSOL changes

With P=$250,000P' = \$250{,}000, E=$150,000E' = \$150{,}000, payerSs=$30,000\text{payerSs} = \$30{,}000, payeeSs=$20,000\text{payeeSs} = \$20{,}000, and ssUncapped=$10,000\text{ssUncapped} = \$10{,}000 (forward):

Sweep
M=$0 ⁣:    gap=0,  netSs=$0M' = \$0\!:\;\; \text{gap} = 0,\; \text{netSs} = \$0
M=$150,000 ⁣:    gap=20,000,  netSs=$0M' = \$150{,}000\!:\;\; \text{gap} = 20{,}000,\; \text{netSs} = \$0
M=$155,000 ⁣:    gap=25,000,  netSs=$5,000M' = \$155{,}000\!:\;\; \text{gap} = 25{,}000,\; \text{netSs} = \$5{,}000
M=$160,000 ⁣:    gap=30,000,  netSs=$10,000    (saturated)M' = \$160{,}000\!:\;\; \text{gap} = 30{,}000,\; \text{netSs} = \$10{,}000 \;\; \text{(saturated)}
M$160,000 ⁣:    netSs=$10,000M' \gg \$160{,}000\!:\;\; \text{netSs} = \$10{,}000

Per-year curve: flat at 0 until MM' reaches the recipient’s post-CS position, linear ramp through the gap, then flat at ssUncapped\text{ssUncapped}. Each year is monotonic in MM.

The aggregate sum across years isn’t always monotonic, though, because different years have different thresholds and can flow in different directions. A year with forward-natural flow unbinds when MM' crosses EE' and contributes a positive amount; a year with reverse-natural flow unbinds when MM' crosses PP' and contributes a negative amount. If those thresholds interleave, the sum can rise, fall, and rise again as MSOL sweeps. That’s the math being honest about mixed-direction years; each individual year is still well- behaved.

The equalization guardrail (optional)

The bonus tables can produce a transfer that, when added to the uncapped CS, lands the recipient at a higher post-tax position than the payor. That’s a sign-flip support outcomes normally avoid. The equalization guardrail is an optional second cap — toggleable on the Support Details tab — that bounds SS so the combined CS + SS transfer preserves the original ordering of PP vs EE:

Equalization bound on netSs
equalSsBound=PE2netCs\text{equalSsBound} = \tfrac{P - E}{2} - \text{netCs}
If PE ⁣:    netSs    equalSsBound(upper cap)\text{If } P \ge E\!:\;\; \text{netSs} \;\le\; \text{equalSsBound} \quad \text{(upper cap)}
If P<E ⁣:    netSs    equalSsBound(lower floor)\text{If } P < E\!:\;\; \text{netSs} \;\ge\; \text{equalSsBound} \quad \text{(lower floor)}

At the binding limit, the parties end up with equal post-tax positions. The guardrail caps SS only — guideline CS is never reduced to fix an inversion. If CS alone already inverts the parties, SS is forced to zero rather than going negative.

Reading the section in the table

Each row is a signed net per period — one number, not a Payer / Payee pair. The bonus-table differences have already been compared at this layer; positive = configured payor pays the configured payee; negative = the reverse.

  • Net CS (uncapped)netCs\text{netCs}, the natural signed CS transfer. MSOL never applies.
  • Net SS (capped at MSOL) — output of the cap formula above (forward or reverse depending on the sign of ssUncapped\text{ssUncapped}), with optional equalization layered on top.
  • Total = CS + SS — the actual cash transfer at payout.

The per-year detail strip below the rows shows each year’s regime label, the prorated MSOL, and the parties’ post-tax positions. If the equalization guardrail bound the year, an “SS equalization bound $X” suffix appears.

The MSOL Cap
We use cookies for analytics to understand how the tool is used. No data is shared with third parties.