Main Formulas: IC1 and then OC1
'INTEREST WF Cures
'I/C
ThisWorkbook.Names.Add "WF.PmtSequence.IC.Cure.NOMINAL.Pmts.WF.INT", RefersTo:="=--(MMULT(IFERROR(WF.PmtSequence.Outstdng.WF.INT/WF.PI.Ratio.RANGE,0),WF.NPS.OrderMatrix)<=WF.IC.Cure.NOMINAL)*WF.CoverageClasses.NPS*(WF.IC.Cure.NOMINAL-(MMULT(IFERROR(WF.PmtSequence.Outstdng.WF.INT/WF.PI.Ratio.RANGE,0),WF.NPS.OrderMatrix)))*--(WF.ProRata.RANGE>0)*WF.ProRata.RANGE*WF.PI.Ratio.RANGE"
ThisWorkbook.Names.Add "WF.PmtSequence.IC.Cure.Bal.WF.INT", RefersTo:="=--(MMULT(IFERROR(WF.PmtSequence.Outstdng.WF.INT/WF.PI.Ratio.RANGE,0),WF.NPS.OrderMatrix)<=WF.IC.Cure.NOMINAL)*WF.CoverageClasses.NPS*WF.PmtSequence.Outstdng.WF.INT"
ThisWorkbook.Names.Add "WF.PmtSequence.IC.Cure.WF.INT", RefersTo:="=IF(WF.PmtSequence.IC.Cure.Bal.WF.INT<WF.PmtSequence.IC.Cure.NOMINAL.Pmts.WF.INT,WF.PmtSequence.IC.Cure.Bal.WF.INT,WF.PmtSequence.IC.Cure.NOMINAL.Pmts.WF.INT)"
ThisWorkbook.Names.Add "WF.IC.Cure.NPS.WF.INT", RefersTo:="=--(MMULT(WF.PmtSequence.IC.Cure.WF.INT, WF.NPS.OrderMatrix)<=MIN(SUM(WF.PmtSequence.IC.Cure.WF.INT),WF.ProceedsAvailable.INT))*--(WF.PmtSequence.IC.Cure.WF.INT>0)*(MIN(SUM(WF.PmtSequence.IC.Cure.WF.INT),WF.ProceedsAvailable.INT)-MMULT(WF.PmtSequence.IC.Cure.WF.INT,WF.NPS.OrderMatrix))*WF.ProRata.RANGE"
ThisWorkbook.Names.Add "WF.IC.Cure.WF.INT", RefersTo:="=SUMPRODUCT(WF.IC.Cure.NPS.WF.INT)"
ThisWorkbook.Names.Add "WF.IC.Cure.Pmts.IntDollars.WF.INT", RefersTo:="=SUMPRODUCT(WF.IC.Cure.NPS.WF.INT/WF.PI.Ratio.RANGE)"
'O/C
ThisWorkbook.Names.Add "WF.PmtSequenceOutstanding.UpTotOC.WF.INT", RefersTo:="=(WF.PmtSequence.Outstdng.WF.INT - WF.IC.Cure.NPS.WF.INT)"
ThisWorkbook.Names.Add "WF.OCDenominator.WF.INT.UpToCov.NPS", RefersTo:="=(WF.PmtSequenceOutstanding.UpTotOC.WF.INT*--((WF.NPS.Type=""DEFERRED"")+(WF.NPS.Type=""PAR""))*WF.CoverageClasses.DENOM)"
ThisWorkbook.Names.Add "WF.OCDenominator.WF.INT.UpToCov", RefersTo:="=SUM(WF.OCDenominator.WF.INT.UpToCov.NPS)"
ThisWorkbook.Names.Add "WF.OC.Cure.NOMINAL.WF.INT", RefersTo:="=MIN(PRODUCT(SUM(WF.OCDenominator.WF.INT.UpToCov,-WF.OCNumerator/MAX(0.0000001%,WF.OCRatio)),N(NOT(OR(WF.OCNumerator/MAX(1, WF.OCDenominator.WF.INT.UpToCov)>=WF.OCRatio,WF.OCDenominator.WF.INT.UpToCov=0)))),SUM(WF.PmtSequenceOutstanding.UpTotOC.WF.INT))"
ThisWorkbook.Names.Add "WF.PmtSequence.OC.Cure.NOMINAL.Pmts.WF.INT", RefersTo:="=--(MMULT(WF.PmtSequenceOutstanding.UpTotOC.WF.INT, WF.NPS.OrderMatrix) <= MIN(SUM(WF.ProceedsAvailable.INT, -WF.IC.Cure.WF.INT), WF.OC.Cure.NOMINAL.WF.INT)) * --(WF.PmtSequenceOutstanding.UpTotOC.WF.INT > 0) * (MIN(SUM(WF.ProceedsAvailable.INT, - WF.IC.Cure.WF.INT), WF.OC.Cure.NOMINAL.WF.INT) - MMULT(WF.PmtSequenceOutstanding.UpTotOC.WF.INT, WF.NPS.OrderMatrix)) * WF.ProRata.RANGE"
ThisWorkbook.Names.Add "WF.OC.Cure.NPS.WF.INT", RefersTo:="=IF(WF.PmtSequenceOutstanding.UpTotOC.WF.INT<WF.PmtSequence.OC.Cure.NOMINAL.Pmts.WF.INT, WF.PmtSequenceOutstanding.UpTotOC.WF.INT, WF.PmtSequence.OC.Cure.NOMINAL.Pmts.WF.INT)"
ThisWorkbook.Names.Add "WF.OC.Cure.WF.INT", RefersTo:="=SUMPRODUCT(WF.OC.Cure.NPS.WF.INT)"
Main Formulas: IC2 and OC2
ThisWorkbook.Names.Add "WF.PmtSequence.Outstdng.WF.PRIN", RefersTo:=WorksheetFunction.Substitute("=WF.PmtSequence.RANGE-SUMIFS(WF.Pmts.UpToItem.WF.PRIN,WF.Pmts.UpToItem.WF.PRIN.HEADER,WF.NPS&CHAR(10)&""Paid"")-SUMIFS(" & Application.ConvertFormula(InterestWaterfallRANGE, xlA1, xlR1C1, , ThisWorkbook.Sheets("Int.WF").Range(IntWFStart)) & "," & Application.ConvertFormula(InterestWaterfallHEADER, xlA1, xlR1C1, , ThisWorkbook.Sheets("Int.WF").Range(IntWFStart)) & ", WF.NPS&CHAR(10)&""Paid"")", "[" & ThisWorkbook.Name & "]", "")
'PRINCIPAL WF Cures
'I/C
ThisWorkbook.Names.Add "WF.PmtSequence.IC.Cure.NOMINAL.Pmts.WF.PRIN", RefersTo:="=0" '--(MMULT(IFERROR(WF.PmtSequence.Outstdng.WF.PRIN/WF.PI.Ratio.RANGE,0),WF.NPS.OrderMatrix)<=SUM(WF.IC.Cure.NOMINAL,-WF.IC.Cure.Pmts.IntDollars.WF.INT))*WF.CoverageClasses.NPS*(SUM(WF.IC.Cure.NOMINAL,-WF.IC.Cure.Pmts.IntDollars.WF.INT)-(MMULT(IFERROR(WF.PmtSequence.Outstdng.WF.PRIN/WF.PI.Ratio.RANGE,0),WF.NPS.OrderMatrix)))*--(WF.ProRata.RANGE>0)*WF.ProRata.RANGE*WF.PI.Ratio.RANGE"
ThisWorkbook.Names.Add "WF.PmtSequence.IC.Cure.Bal.WF.PRIN", RefersTo:="=0" '--(MMULT(IFERROR(WF.PmtSequence.Outstdng.WF.PRIN/WF.PI.Ratio.RANGE,0),WF.NPS.OrderMatrix)<=SUM(WF.IC.Cure.NOMINAL,-WF.IC.Cure.Pmts.IntDollars.WF.INT))*WF.CoverageClasses.NPS*WF.PmtSequence.Outstdng.WF.PRIN"
ThisWorkbook.Names.Add "WF.PmtSequence.IC.Cure.WF.PRIN", RefersTo:="=0" 'IF(WF.PmtSequence.IC.Cure.Bal.WF.PRIN<WF.PmtSequence.IC.Cure.NOMINAL.Pmts.WF.PRIN,WF.PmtSequence.IC.Cure.Bal.WF.PRIN,WF.PmtSequence.IC.Cure.NOMINAL.Pmts.WF.PRIN)"
ThisWorkbook.Names.Add "WF.IC.Cure.NPS.WF.PRIN", RefersTo:="=0" '--(MMULT(WF.PmtSequence.IC.Cure.WF.PRIN, WF.NPS.OrderMatrix)<=MIN(SUM(WF.PmtSequence.IC.Cure.WF.PRIN),WF.ProceedsAvailable.PRIN))*--(WF.PmtSequence.IC.Cure.WF.PRIN>0)*(MIN(SUM(WF.PmtSequence.IC.Cure.WF.PRIN),WF.ProceedsAvailable.PRIN)-MMULT(WF.PmtSequence.IC.Cure.WF.PRIN,WF.NPS.OrderMatrix))*WF.ProRata.RANGE"
ThisWorkbook.Names.Add "WF.IC.Cure.WF.PRIN", RefersTo:="=SUM(WF.IC.Cure.NPS.WF.PRIN)"
'O/C
ThisWorkbook.Names.Add "WF.PmtSequenceOutstanding.UpTotOC.WF.PRIN", RefersTo:="=(WF.PmtSequence.Outstdng.WF.PRIN - WF.IC.Cure.NPS.WF.PRIN)"
ThisWorkbook.Names.Add "WF.OCDenominator.WF.PRIN.UpToCov.NPS", RefersTo:="=(WF.PmtSequenceOutstanding.UpTotOC.WF.PRIN*--((WF.NPS.Type=""DEFERRED"")+(WF.NPS.Type=""PAR""))*WF.CoverageClasses.DENOM)"
ThisWorkbook.Names.Add "WF.OCDenominator.WF.PRIN.UpToCov", RefersTo:="=SUM(WF.OCDenominator.WF.PRIN.UpToCov.NPS)"
ThisWorkbook.Names.Add "WF.OCNumerator.WF.PRIN.UpToCov", RefersTo:="=SUM(WF.OCNumerator, -WF.IC.Cure.WF.PRIN)"
ThisWorkbook.Names.Add "WF.OC.Cure.NOMINAL.WF.PRIN", RefersTo:="=MIN(PRODUCT((WF.OCDenominator.WF.PRIN.UpToCov*WF.OCRatio-WF.OCNumerator.WF.PRIN.UpToCov)/MAX(0.000001%,(WF.OCRatio-1)), N(NOT(OR(WF.OCNumerator.WF.PRIN.UpToCov/MAX(1, WF.OCDenominator.WF.PRIN.UpToCov)>=WF.OCRatio,WF.OCDenominator.WF.PRIN.UpToCov=0)))), SUM(WF.OCDenominator.WF.PRIN.UpToCov.NPS))"
ThisWorkbook.Names.Add "WF.PmtSequence.OC.Cure.NOMINAL.Pmts.WF.PRIN", RefersTo:="=--(MMULT(WF.PmtSequenceOutstanding.UpTotOC.WF.PRIN, WF.NPS.OrderMatrix) <= MIN(SUM(WF.ProceedsAvailable.PRIN, -WF.IC.Cure.WF.PRIN), WF.OC.Cure.NOMINAL.WF.PRIN)) * --(WF.PmtSequenceOutstanding.UpTotOC.WF.PRIN > 0) * (MIN(SUM(WF.ProceedsAvailable.PRIN, - WF.IC.Cure.WF.PRIN), WF.OC.Cure.NOMINAL.WF.PRIN) - MMULT(WF.PmtSequenceOutstanding.UpTotOC.WF.PRIN, WF.NPS.OrderMatrix)) * WF.ProRata.RANGE"
ThisWorkbook.Names.Add "WF.OC.Cure.NPS.WF.PRIN", RefersTo:="=IF(WF.PmtSequenceOutstanding.UpTotOC.WF.PRIN<WF.PmtSequence.OC.Cure.NOMINAL.Pmts.WF.PRIN, WF.PmtSequenceOutstanding.UpTotOC.WF.PRIN, WF.PmtSequence.OC.Cure.NOMINAL.Pmts.WF.PRIN)"
ThisWorkbook.Names.Add "WF.OC.Cure.WF.PRIN", RefersTo:="=SUM(WF.OC.Cure.NPS.WF.PRIN)"
Bookmarks