! WASI_2003_HE2_FHLMC.CDI #CMOVER_3.0B ASSET_BACKED_HOMEEQUITY !
MAX_CF_VECTSIZE 540
!
!! Created by Intex Deal Maker v3.5.033 , subroutines 3.0e_p1
!! 05/29/2003 10:50 AM
!
COLLAT_TYPE "HELOC"
!
! Modeled in the Intex CMO Modeling Language, (NTCD7638)
! which is copyright (c) 2003 by Intex Solutions, Inc.
! Intex shall not be held liable for the accuracy of this data
! nor for the accuracy of information which is derived from this data.
!
COLLAT_GROUPS 1
!
!
DEFINE CONSTANT #OrigCollBal = 400011771.16
DEFINE CONSTANT #OrigCollBal1 = 400011771.16
!
DEFINE CONSTANT #OrigBondBal = 400000000.00
DEFINE CONSTANT #OrigBondBal1 = 400011771.16
!
DEFINE #BondBal = 400000000.00
!
FULL_DEALNAME: WASI_2003_HE2_FHLMC
!
DEAL SIZE: $ 400000000.00
PRICING SPEED: GROUP 1 CPR 38%
! ISSUE DATE: 20030601
SETTLEMENT DATE: 20030625
!
!! OPTIONAL REDEMPTION: 10%
DEFINE TRANCHE "EXP","A-1","A-2"
OPTIONAL REDEMPTION: (((BBAL("A-1","A-2")/ #OrigBondBal) ‹ 10%));
!00
Record date delay: 24
!
DEFINE TR_INDEXDEPS_ALL
!
TRUSTEE_FEE 0.006
!
DEAL_CLOCK_INFO _
ISSUE_CDU_DATE 20030601 _
DEAL_FIRSTPAY_DATE 20030725
!
DEFINE SETTINGS NEGAM_PRINC_ONLY
!
DEFINE CONSTANT #RevolvEnd = 12
!
!
DEFINE TABLE "CapNotional" (62, 2) = "CURMONTH" "Balance"
1.1 400,000,000.00
2.1 400,000,000.00
3.1 400,000,000.00
4.1 400,000,000.00
5.1 400,000,000.00
6.1 400,000,000.00
7.1 400,000,000.00
8.1 400,000,000.00
9.1 400,000,000.00
10.1 400,000,000.00
11.1 400,000,000.00
12.1 400,000,000.00
13.1 400,000,000.00
14.1 400,000,000.00
15.1 400,000,000.00
16.1 400,000,000.00
17.1 400,000,000.00
18.1 400,000,000.00
19.1 400,000,000.00
20.1 400,000,000.00
21.1 400,000,000.00
22.1 400,000,000.00
23.1 400,000,000.00
24.1 400,000,000.00
25.1 400,000,000.00
26.1 400,000,000.00
27.1 400,000,000.00
28.1 400,000,000.00
29.1 400,000,000.00
30.1 400,000,000.00
31.1 400,000,000.00
32.1 400,000,000.00
33.1 400,000,000.00
34.1 400,000,000.00
35.1 400,000,000.00
36.1 400,000,000.00
37.1 400,000,000.00
38.1 385,623,323.21
39.1 371,170,940.94
40.1 356,642,454.56
41.1 342,037,463.30
42.1 327,355,564.30
43.1 312,596,352.57
44.1 297,759,421.00
45.1 282,844,360.33
46.1 267,850,759.14
47.1 252,778,203.85
48.1 237,626,278.69
49.1 222,394,565.72
50.1 207,082,644.78
51.1 191,690,093.52
52.1 176,216,487.35
53.1 160,661,399.43
54.1 145,024,400.71
55.1 129,305,059.84
56.1 113,502,943.24
57.1 97,617,615.01
58.1 81,648,636.97
59.1 65,595,568.64
60.1 49,457,967.21
61.1 41,203,944.50
62.1 0.00
!
DEFINE #FloorBonds = 0.50% * 400000000
DEFINE #SpecOCTarg = 5000000
ifndef #cmover_3.0d _
DEFINE #OC = 11771.16
!
ifdef #cmover_3.0d _
DEFINE STANDARDIZE OC_ACTUAL_VAL #OC = 11771.16
!
DEFINE STANDARDIZE OCT_INITVAL CONSTANT #InitOCTarg = 5000000
DEFINE STANDARDIZE OCT_STEPDOWN_MONTH CONSTANT #StepDownDate = 31
DEFINE STANDARDIZE OCT_STEPDOWN_FRAC CONSTANT #StepOCFrac = 0.025
DEFINE STANDARDIZE EXCESS_INTEREST #XSSpread = 0
DEFINE STANDARDIZE OCT_FLOOR CONSTANT #FloorOCTarg = #FloorBonds
DEFINE STANDARDIZE OCT_VAL DYNAMIC #Octval = #SpecOCTarg
!
DEFINE COLLAT WT_BY_PREVBAL #NetRate = LOAN("OPTINT") / LOAN("PREVBAL") *
1200
DEFINE COLLAT WT_BY_PREVBAL GROUP 1 #NetRate1 = LOAN("OPTINT") /
LOAN("PREVBAL") * 1200
!
DEFINE DYNAMIC #NetRateActual360 = #Netrate * 30 / DAYS_DIFF(CURDATE ,
MONTHS_ADD(CURDATE,-1))
!
!
DEFINE #FGBal = 0
DEFINE #FGWrapBal = 400000000
!
!
TOLERANCE WRITEDOWN_0LOSS 9999999999999.00
TOLERANCE INTEREST 9999999999999.00
TOLERANCE NEGAM 9999999999.00
!
DEFINE #TrustFrac = 1
!
DEFINE #RapidAmort = 0
!
DEFINE #drawbal = 0
!
DEFINE #InRevolv = 0
!
DEFINE #MaxPayment = 15000000.00
!
DEFINE #TrackResidWD = 0
!
DEFINE DYNAMIC #PayRate = LIBOR_1MO
!
DEFINE #MAXFund = 4 * #InitOCTarg
!
DEFINE #MAPDate = 20060630
!
DEFINE #Holiday = 6
!
Define #DueR2 = 0
!
Tranche "#InterestCap" SYMVAR
!
Tranche "#CE" SYMVAR
Tranche "#TEST" SYMVAR
Tranche "#x" SYMVAR
INITIAL INDEX PRIME 4.25
INITIAL INDEX LIBOR_1MO 1.32
!
DEFINE #SpecAcctBal = 0
!
Tranche "EXP" SEN_FEE_NO
Block ( #FGWrapBal ); at 0.15 NOTIONAL WITH FORMULA BEGIN ( MIN(#FGWrapBal,
#FGWrapBal) ); _
END ( MIN(
#FGWrapBal, #FGWrapBal) ); _
DAYCOUNT 30360 FREQ M _
Delay 24 Dated 20030601 Next 20030725
!
Tranche "A-1" SEN_FLT
Block $ 400000000.00 at 1.57 FREQ M FLOAT RESET M _
DAYCOUNT ACTUAL360 BUSINESS_DAY NONE _
Delay 0 Dated 20030625 Next 20030725
1 * LIBOR_1MO + 0.25
0 999
!
Tranche "A-2" SEN_FLT
Block $ 0.00 at 1.37 FREQ M FLOAT RESET M _
DAYCOUNT ACTUAL360 BUSINESS_DAY NONE _
Delay 0 Dated 20030625 Next 20030725
1 * LIBOR_1MO + 0.05
0 999
!
Tranche "CERT" JUN_PO
Block $ 0.00 at 0 FREQ M _
DAYCOUNT ACTUAL360 BUSINESS_DAY NONE _
Delay 0 Dated 20030625 Next 20030725
!
Tranche "BALANCESHEET" JUN_PO
Block $ 0.00 at 0 FREQ M _
DAYCOUNT 30360 BUSINESS_DAY NONE _
Delay 24 Dated 20030601 Next 20030725
!
Tranche "R" JUN_RES
Block $ 110011812.77 at 0 NOTIONAL WITH GROUP 0 SURPLUS _
DAYCOUNT 30360 BUSINESS_DAY NONE _
FREQ M Delay 0 Dated 20030625 Next 20030725
!
Tranche "R2" JUN_RES
Block $ 110011812.77 at 0 NOTIONAL WITH GROUP 0 _
DAYCOUNT 30360 BUSINESS_DAY NONE _
FREQ M Delay 24 Dated 20030601 Next 20030725
!
Tranche "ALL_BOND" PSEUDO
Block USE PCT 100.0 100.0 of A-1#1
Block USE PCT 100.0 100.0 of A-2#1
!
Tranche "ALL_SELLER_INT" PSEUDO
Block USE PCT 100.0 100.0 of CERT#1
Block USE PCT 100.0 100.0 of BALANCESHEET#1
!
Tranche "ALL_RESID" PSEUDO
Block USE PCT 100.0 100.0 of "R#1"
Block USE PCT 100.0 100.0 of "R2#1"
!
TRANCHE "#ServAsset" SYMVAR
Tranche "#NetRate" SYMVAR
!
Tranche "#NetRateActual360" SYMVAR
!
Tranche "#OC" SYMVAR
Tranche "#SpecOCTarg" SYMVAR
!
Tranche "DEAL_PLUGIN" PSEUDO
Block USE PCT 100.0 100.0 OF "A-1#1"
Block USE PCT 100.0 100.0 OF "A-2#1"
Block USE PCT 100.0 100.0 OF "CERT#1"
Block USE PCT 0.0 100.0 OF "R#1"
!
ifdef #_CMOVER_3.0A1 _
DEFINE PSEUDO_TRANCHE COLLAT _
Delay 24 Dated 20030601 Next 20030725 Settle 20030625
DEFINE PSEUDO_TRANCHE COLLAT GROUP 1 _
Delay 24 Dated 20030601 Next 20030725 Settle 20030625
!
RESERVE_FUND "SPREAD_ACCT" ON TRANCHE "A-1","A-2" _
COVERS RULES RULES _
EXCESS_TO "R" _
BALANCE_CAP ( #SpecAcctBal ); _
FUNDING_FROM RULES _
STARTING_BALANCE 0 _
REINVEST_AT 0.00 _
BY "DM"
!
FINANCIAL_GUARANTY "HEDGE" _
FUNDING_FROM RULES _
COVERS BY RULES
!
FINANCIAL_GUARANTY "FG" ON TRANCHE "A-1","A-2" _
COVERS DELINQ LOSSES _
BY "DM"
!
CLASS "EXP" NO_BUILD_TRANCHE _
= "EXP"
CLASS "A-1" NO_BUILD_TRANCHE _
SHORTFALL_PAYBACK COUPONCAP TRUE _
SHORTFALL_EARN_INT COUPONCAP TRUE _
= "A-1"
CLASS "A-2" NO_BUILD_TRANCHE _
SHORTFALL_PAYBACK COUPONCAP TRUE _
SHORTFALL_EARN_INT COUPONCAP TRUE _
= "A-2"
CLASS "CERT" NO_BUILD_TRANCHE _
= "CERT"
CLASS "RESID" NO_BUILD_TRANCHE _
= "R#1"
CLASS "NOTE" DISTRIB_CLASS PRORATA ALLOCATION _
= "A-1" "A-2"
CLASS "BALANCESHEET" NO_BUILD_TRANCHE _
= "BALANCESHEET"
CLASS "RESID2" NO_BUILD_TRANCHE _
= "R2"
!
!
CLASS "ROOT" _
WRITEDOWN_BAL RULES _
DISTRIB_CLASS RULES _
= "EXP" "NOTE" "CERT" "RESID" "BALANCESHEET" "RESID2"
!
DEFINE PSEUDO_TRANCHE CLASS "NOTE" Delay 0 Dated 20030625 Next
20030725 DAYCOUNT ACTUAL360 BUSINESS_DAY NONE
!
CROSSOVER When 0
!
!
INTEREST_SHORTFALL FULL_PREPAY Compensate Pro_rata _
PARTIAL_PREPAY Compensate Pro_rata _
LOSS Compensate Pro_rata
!
DEFINE MACRO BLOCK #NOTE_Int =
{
- ------------------------------------
from : CLASS ( "NOTE" )
pay : CLASS INTEREST PRO_RATA ( "A-1"; "A-2" )
- ------------------------------------
}
DEFINE MACRO BLOCK #NOTE_InS =
{
- ------------------------------------
from : CLASS ( "NOTE" )
pay : CLASS INTSHORT PRO_RATA ( "A-1"; "A-2" )
- ------------------------------------
}
DEFINE MACRO BLOCK #NOTE_Prn =
{
- ------------------------------------
from : CLASS ( "NOTE" )
pay : CLASS BALANCE PRO_RATA ( "A-1" ; "A-2" )
- ------------------------------------
!
- ------------------------------------
from : CLASS ( "A-1" )
pay : SEQUENTIAL ( "A-1#1" )
- ------------------------------------
from : CLASS ( "A-2" )
pay : SEQUENTIAL ( "A-2#1" )
- ------------------------------------
}
DEFINE MACRO BLOCK #CERT_Prn =
{
- ------------------------------------
from : CLASS ( "CERT" )
pay : SEQUENTIAL ( "CERT#1" )
- ------------------------------------
}
!
CMO Block Payment Rules
- ------------------------------------
calculate : #CapBAL = LOOKUP_TBL( "STEP", Curmonth, "CapNotional",
"CURMONTH", "Balance" )
calculate : #CapRATE = 15
calculate : #CapINDEX = IF CURDATE EQ 20030625 THEN #PayRate ELSE
LIBOR_1MO("IAC",1)
calculate : #CapIN = MAX(0, (#CapINDEX - #CapRATE) * #CapBAL / 1200 *
NDAYS_ACCRUE_INT("NOTE#1") / 30)
calculate : #CapOUT = 0
!
calculate : #HedgeCCIn = #CapIN
!! #HedgePayOut is used as a subaccount
calculate : #HedgePayOut = #CapOUT
!! #HedgePaySave should never be changed
calculate : #HedgePaySave = #CapOUT
!
- ------------------------------------
from : CASH_ACCOUNT (100)
subject to : CEILING (#HedgePayOut)
pay : CREDIT_ENHANCEMENT ("HEDGE")
- ------------------------------------
!
CALCULATE : #ISSUE = BBAL("A-1","A-2")
!
calculate : #ServAsset = coll_prev_bal * 0.175%/12
!
calculate : #Draw = COLL_P_MISC("DRAWS", 0)
!
calculate : #InRevolv = CURMONTH LE #RevolvEnd AND
CREDIT_ENHANCEMENT ( "SPREAD_ACCT" ) ‹ #MAXFund
!
calculate : #BARB = #BARB + IF #InRevolv THEN 0 ELSE 1
!
calculate : #PriorBal = #PriorBal
!
calculate : #Interest = COLL_I
!
calculate : #TrustFrac = ( coll_prev_bal - BBAL("CERT")-
BBAL("BALANCESHEET") ) / coll_prev_bal
!
!! #Exclude kicks out cash due to seller for draws after the Rapid Amort
period.
calculate : #Exclude = (1-#TrustFrac) * Coll_I
!
calculate : #Interest = COLL_I - #Exclude
!
calculate : #ExcludeC = MAX(0, BBAL("CERT")/ (BBAL("CERT")+
BBAL("BALANCESHEET"))) * #Exclude
calculate : #ExcludeB = MAX(0, BBAL("BALANCESHEET")/
(BBAL("CERT")+ BBAL("BALANCESHEET"))) * #Exclude
!
!! added the ManagedAmortPeriod in the princ calculation
calculate : #Princ = IF CURDATE LE #MAPDate THEN MAX( 0,
COLL_P - #Draw ) _
ELSE COLL_P
!
calculate : #InitAcctBal = IF #BARB ‹ 1 THEN #MAXFund ELSE 0
!
calculate : #SpecAcctBal = #InitAcctBal + IF #BARB ‹ 1 THEN MAX(
0, COLL_P - #Draw )ELSE 0
!
calculate : #SpecAcctFund = MAX( 0, #SpecAcctBal -
CREDIT_ENHANCEMENT ( "SPREAD_ACCT" ) )
!
calculate : #PrevSpecOC = #SpecOCTarg
!
!! calculate : #CurrentOC = MAX( 0, COLL_BAL - (BBAL("NOTE",
"CERT") - COLL_P + #Draw))
!
calculate : #CurrentOC = MAX( 0, (COLL_BAL +
CREDIT_ENHANCEMENT ( "SPREAD_ACCT" )+ (COLL_P - #Draw)) - (BBAL("NOTE")-
BBAL("BALANCESHEET")))
!
calculate : #XSSpread = MAX( 0, #Interest -
OPTIMAL_INTPMT("ROOT") - INTSHORT_ACCUM("ROOT"))
!
calculate : #FloorOCTotal = #FloorOCTarg
!
calculate : #StepOCTarg = BBAL("NOTE") * #StepOCFrac
!
calculate : #StepDownDatePass = CURMONTH GE #StepDownDate
!
calculate : #StepDownBal1 = BBAL("NOTE") ‹ #OrigBondBal * 50%
!
calculate : #StepDown = #StepDown OR ( BBAL("NOTE") LT 0.01 )
OR ( #StepDownDatePass AND #StepDownBal1)
!
calculate : #SpecOCTarg = IF #StepDown _
THEN MAX( MIN( #InitOCTarg, #StepOCTarg
) , #FloorOCTotal ) _
ELSE MAX ( #InitOCTarg, #FloorOCTotal )
!
calculate : #SpecOCTarg = MIN( #SpecOCTarg, COLL_BAL )
!
calculate : #SpecOCTarg = #Octval
!
calculate : #OCDeficiency = IF CURMONTH LT (#Holiday + 1) THEN 0
ELSE MAX(0, #SpecOCTarg - #CurrentOC)
!
calculate : #TEST = #OCDeficiency
!
calculate : #OCSurplus = MINMAX(0, #CurrentOC - #SpecOCTarg,
#Princ)
!
!! calculate : #OCSurplus = MAX(0, #CurrentOC - #SpecOCTarg)
!
!! calculate : #PrincPmt = MAX(0, #Princ - #OCSurplus)
!
!! calculate : #PrincPmt = IF CURDATE LE 20051231 AND
BBAL("CERT") ‹ 1 THEN MAX(0, #Princ - #OCSurplus) ELSE MAX(0, #Princ)
!! calculate : #PrincPmt = MAX(0, #Princ)
calculate : #PrincPmt = IF CURDATE LE #MAPDate AND BBAL("CERT")
‹ 1 THEN MAX(0, #Princ - #OCSurplus) ELSE MAX(0, #Princ)
calculate : #ADJPRINC = IF CURDATE LE #MAPDate AND BBAL("CERT")
> 1 THEN MAX(0, #PrincPmt - BBAL("CERT")) ELSE MAX(0, #PrincPmt)
calculate : #PrincCert = IF CURDATE LE #MAPDate AND BBAL("CERT") >
1 THEN MAX(0,#PrincPmt) ELSE 0
!
!! calculate : #XSIntRem = MAX( 0, #Interest -
OPTIMAL_INTPMT("ROOT") - INTSHORT_ACCUM("ROOT") + #OCSurplus - #SpecAcctFund)
!
!! calculate : #XSIntRem = MAX( 0, #Interest -
OPTIMAL_INTPMT("ROOT") - INTSHORT_ACCUM("ROOT") _
!! + IF CURDATE LE 20051231 THEN
MAX(0, #Princ - #ADJPRINC) ELSE 0)
!
calculate : #XSIntRem = MAX( 0, #Interest -
OPTIMAL_INTPMT("ROOT") - INTSHORT_ACCUM("ROOT")_
+ IF CURDATE LE #MAPDate THEN
MINMAX(#OCSurplus, 0, #Princ - #ADJPRINC) ELSE 0)
!!
!!- OPTIMAL_INTPMT("ROOT") - INTSHORT_ACCUM("ROOT")+
COUPONCAP_SHORTFALL("ROOT")
!!calculate : #SpreadHol = MIN( MAX(0, #XSIntRem -
DELINQ_NET_LOSS), #XSIntRem * 100/100 )
!
!! calculate : #XSIntRem = IF CURMONTH LE 0 THEN MAX(0, #XSIntRem
- - #SpreadHol) ELSE #XSIntRem
!
calculate : #RevolvIncr = IF CURDATE LE #MAPDate THEN _
MAX( 0, #Draw - COLL_P - #XSIntRem )
- -
ELSE #Draw
!
calculate : #CertIncr = IF CURDATE LE #MAPDate THEN
#RevolvIncr ELSE 0
!
!
calculate : #XSIntRem = #XSIntRem - IF CURDATE LE #MAPDate
THEN MAX(0, #Draw - COLL_P - #RevolvIncr) ELSE 0
!
!
!! calculate : #SubDefic = MAX ( 0, ( BBAL("ROOT") - #Princ ) -
COLL_BAL )
!
calculate : #SubDefic = MAX ( 0, ( BBAL("NOTE") - (COLL_BAL
+ CREDIT_ENHANCEMENT ( "SPREAD_ACCT" )+ COLL_P - #Draw)))
!
!
calculate : #AddPrinc = MIN( #XSIntRem, #SubDefic )
!
calculate : #XSIntRem = MAX( 0, #XSIntRem - #AddPrinc )
!
calculate : #XtraPDA = MIN( #OCDeficiency, #XSIntRem )
!
calculate : #XSIntRem = MAX( 0, #XSIntRem - #XtraPDA )
!
calculate : #PayCert = IF (BBAL ("CERT") + #CertIncr > 0)
THEN_
MIN(#XSIntRem + #PrincCert,BBAL
("CERT")+ #RevolvIncr) ELSE 0
!
calculate : #SpecAcctBal = #SpecAcctBal + #XtraPDA
!
calculate : #SpecAcctFund = MAX( 0, #SpecAcctBal -
CREDIT_ENHANCEMENT ( "SPREAD_ACCT" ) )
!
!! calculate : #XSIntRem = MAX( 0, #XSIntRem - #XtraPDA )
!
calculate : #X = #XSIntRem
!
!! calculate : #DistribAmt = #ADJPRINC + #AddPrinc + #XtraPDA
calculate : #DistribAmt = IF CURDATE LE #MAPDate THEN MAX(0,
#ADJPRINC + #AddPrinc + #XtraPDA - #OCSURPLUS) ELSE_
#ADJPRINC + #AddPrinc + #XtraPDA
!
calculate : #DistribAmt1 = #PayCert
!
calculate : #PAY_CERT = #DistribAmt1
!
calculate : "NOTE" _
NO_CHECK CUSTOM AMOUNT LIMIT V1 = IF #BARB ‹ 1 THEN 0 ELSE #DistribAmt
!
calculate : "CERT" _
NO_CHECK CUSTOM AMOUNT #NVDist = MAX( 0, #DistribAmt + #DistribAmt1 -
V1 )
!
calculate : "CERT" _
NEGAM AMOUNT #NVNegAm = IF CURDATE LE #MAPDate THEN
#RevolvIncr ELSE 0
!
calculate : "BALANCESHEET" _
NEGAM AMOUNT #NVNegAm = IF CURDATE GT #MAPDate THEN
#RevolvIncr ELSE 0
!
calculate : #SpecAcctFund = MAX( 0, #SpecAcctBal - CREDIT_ENHANCEMENT
( "SPREAD_ACCT" ) + #XSSpread )
!
calculate : #MaxInterest = COLL_I
!
- ------------------------------------
when : IS_TRUE(BBAL("CERT") > 0)
from : SUBACCOUNT(#ExcludeC,CLASS "ROOT")
subject to : CEILING (#MaxInterest)
pay : AS_interest("CERT")
- ------------------------------------
when : IS_TRUE(BBAL("BALANCESHEET") > 0 )
from : SUBACCOUNT(#ExcludeB,CLASS "ROOT")
subject to : CEILING (#MaxInterest)
pay : AS_interest("BALANCESHEET")
- ------------------------------------
pay : CLASS ENTIRETY SEQUENTIAL ( "EXP" )
- ------------------------------------
when : IS_TRUE (#BARB ‹ 1)
from : SUBACCOUNT(#DISTRIBAMT, CLASS "ROOT")
subject to : CEILING ( #SpecAcctFund )
pay : CREDIT_ENHANCEMENT ( "SPREAD_ACCT" )
- ------------------------------------
!
calculate : #CE = CREDIT_ENHANCEMENT ( "SPREAD_ACCT" )
!
calculate : #BARB = IF CREDIT_ENHANCEMENT (
"SPREAD_ACCT" ) > #MAXFund THEN 1 ELSE #BARB
!
calculate : #InterestCap = #Interest - intpmt("EXP")
!
- ------------------------------------
subject to : CEILING (#InterestCap)
pay : CLASS INTEREST PRO_RATA ( "NOTE" )
- ------------------------------------
{#NOTE_Int}
- ------------------------------------
when : IS_TRUE (#BARB > 0)
pay : CLASS PRINCIPAL SEQUENTIAL ( "NOTE" )
- ------------------------------------
pay : CLASS PRINCIPAL SEQUENTIAL ( "CERT" )
- ------------------------------------
when : IS_TRUE (BBAL("CERT") > 0)
from : CREDIT_ENHANCEMENT ("SPREAD_ACCT")
subject to : CEILING ( #SpecAcctFund )
pay : CLASS PRINCIPAL SEQUENTIAL ("CERT")
- ------------------------------------
when : IS_TRUE (#BARB > 0)
from : CREDIT_ENHANCEMENT ("SPREAD_ACCT")
subject to : CEILING ( #SpecAcctFund )
pay : CLASS PRINCIPAL SEQUENTIAL ("NOTE")
- ------------------------------------
{#NOTE_Prn}
- ------------------------------------
!! pay : CLASS PRINCIPAL SEQUENTIAL ( "CERT" )
- ------------------------------------
{#CERT_Prn}
- ------------------------------------
!
- -------------------------------------
pay : CLASS INTSHORT PRO_RATA ( "NOTE" )
- ------------------------------------
{#NOTE_InS}
- ------------------------------------
!
calculate : #PNote = princpmt("NOTE")
calculate : #PCert = princpmt("CERT")
calculate : #IntNote = #InterestCap - intpmt ("NOTE")
- ------------------------------------
from : CLASS ( "ROOT" )
pay : CLASS COUPONCAP_SHORT PRO_RATA ( "A-1"; "A-2" )
- ------------------------------------
from : SUBACCOUNT ( #HedgeCCIn, CREDIT_ENHANCEMENT "HEDGE" )
pay : CLASS INTSHORT PRO_RATA ( "NOTE" )
pay : CLASS COUPONCAP_SHORT PRO_RATA ( "A-1"; "A-2" )
- -------------------------------------
{#NOTE_InS}
- ------------------------------------
!
calculate : #ZZ = intpmt("note")
- ------------------------------------
calculate : #WriteDown = IF (CURMONTH > 36 AND BBAL("BALANCESHEET") > 1)_
THEN MIN(DELINQ_NET_LOSS, MAX(0,
BBAL("NOTE#1","CERT#1","BALANCESHEET") + #CURRENTOC - COLL_BAL))_
ELSE MIN(DELINQ_NET_LOSS, MAX(0,
BBAL("NOTE#1","CERT#1","BALANCESHEET") - COLL_BAL))
calculate : #AppliedWD = IF (CURMONTH > 36 AND BBAL("BALANCESHEET") > 1)_
THEN #WriteDown * MAX(0,
MIN(1,BBAL("BALANCESHEET")/COLL_PREV_BAL)) ELSE 0
calculate : #ResidWD = IF (CURMONTH > 36 AND BBAL("NOTE") > 1)_
THEN #WriteDown * MAX(0, MIN(1,(COLL_PREV_BAL -
BBAL("BALANCESHEET")) /COLL_PREV_BAL)) ELSE 0
calculate : #TrackResidWD = #TrackResidWD + #ResidWD
calculate : #TestWD = #AppliedWD
calculate : #WD = #WriteDown
calculate : #RWD = #ResidWD
- ------------------------------------
from : SUBACCOUNT ( #AppliedWD)
pay : WRITEDOWN PRO_RATA ( "BALANCESHEET")
- -------------------------------------
! when : IS_TRUE (CURDATE LE #MAPDate)
pay : NEGAM SEQUENTIAL ("CERT#1" )
- ------------------------------------
when : IS_TRUE (CURDATE GT #MAPDate)
pay : NEGAM SEQUENTIAL ("BALANCESHEET#1" )
- ----------------------------------------
from : SUBACCOUNT(#DISTRIBAMT1, CLASS "ROOT")
pay : CLASS BALANCE SEQUENTIAL ( "CERT" )
- -------------------------------------
when : IS_TRUE (#BARB > 0)
from : CREDIT_ENHANCEMENT ("SPREAD_ACCT")
pay : CLASS PRINCIPAL SEQUENTIAL ("NOTE")
- ------------------------------------
{#NOTE_Prn}
- ------------------------------------
{#CERT_Prn}
- ------------------------------------
when : IS_TRUE (#BARB > 0 )
from : CREDIT_ENHANCEMENT ("SPREAD_ACCT")
pay : CLASS BALANCE SEQUENTIAL ( "CERT" )
pay : CLASS BALANCE SEQUENTIAL ( "NOTE" )
- ------------------------------------
!
{#NOTE_Prn}
- ------------------------------------
{#CERT_Prn}
- ------------------------------------
calculate : #Write = MIN( DELINQ_NET_LOSS, MAX( 0.0, BBAL("A-1#1","A-2#1")
- - COLL_BAL) )
- ------------------------------------
when : IS_TRUE (#BARB > 0)
from : CREDIT_ENHANCEMENT ("FG")
subject to : CEILING ( #Write )
pay : CLASS BALANCE PRO_RATA ( "NOTE" )
- ------------------------------------
!
{#NOTE_Prn}
- ------------------------------------
{#CERT_Prn}
- ------------------------------------
!
calculate : #DueR2 = IF (CURMONTH > 36 and BBAL("NOTE") ‹ 1 and BBAL("CERT")
‹ 1) THEN_
MAX( 0, COLL_BAL + CREDIT_ENHANCEMENT ( "SPREAD_ACCT" )_
- (BBAL("NOTE") + BBAL("BALANCESHEET") + BBAL("CERT")
- - #DISTRIBAMT - #DISTRIBAMT1 + #PCERT + #PNOTE)_
- #TrackResidWD) ELSE 0
!
calculate : #Write1 = IF (CURMONTH > 36 and BBAL("NOTE") ‹ 1 and
BBAL("CERT") ‹ 1) THEN #DueR2 ELSE 0
!
-----------------------------------------
calculate : #B = #DISTRIBAMT
calculate : #MAXDISTRIB = MIN( #Write1,#DISTRIBAMT - #PNote - #PCert)
calculate : #D = #MaxPayment-#TrackResidWD
- ------------------------------------
when : IS_TRUE (CURMONTH > 36 and BBAL("A-1#1","A-2#1") ‹ 1 AND
BBAL("CERT") ‹ 1 )
from : SUBACCOUNT(#DISTRIBAMT, CLASS "ROOT")
subject to : CEILING ( #MAXDISTRIB)
pay : AS_INTEREST("R2")
- ------------------------------------
!
calculate : #Rem_DueR2 = #DueR2 - intpmt("R2")
calculate : #TrackPay = MAX(0,#TrackPay + #B - #DISTRIBAMT)
calculate : #C = #B - #DISTRIBAMT
!! calculate : #MDBS = #DISTRIBAMT - #PNote - #PCert
calculate : #MDBS = MAX(0,BBAL("BALANCESHEET#1") - COLL_BAL)
!
- -------------------------------------------------
when : IS_TRUE (BBAL("A-1#1","A-2#1") ‹ 1 AND BBAL("CERT") ‹ 1)
from : SUBACCOUNT(#DISTRIBAMT, CLASS "ROOT")
subject to : CEILING (#MDBS)
pay : CLASS PRINCIPAL SEQUENTIAL ( "BALANCESHEET" )
- --------------------------------------------
when : IS_TRUE (#PriorBal ‹ 1 AND INTPMT ("R2") > 1 and curmonth > 1)
from : SUBACCOUNT ( #HedgeCCIn, CREDIT_ENHANCEMENT "HEDGE" )
pay : AS_INTEREST ("R2")
- ------------------------------------
!
when : IS_TRUE (#PriorBal ‹ 1 AND INTPMT ("R2") > 1 and curmonth > 1)
from : CLASS ( "ROOT" )
pay : AS_INTEREST ("R2")
- --------------------------------------------
when : IS_TRUE (#Rem_DueR2 ‹ 1)
from : CLASS ( "ROOT" )
pay : CLASS Principal SEQUENTIAL ("BALANCESHEET")
- --------------------------------------------
from : SUBACCOUNT ( #HedgeCCIn, CREDIT_ENHANCEMENT "HEDGE" )
pay : AS_INTEREST ("R")
- ------------------------------------
calculate : #SS = INTPMT("R")
calculate : #OC = MAX( 0, COLL_BAL + CREDIT_ENHANCEMENT (
"SPREAD_ACCT") _
- BBAL("NOTE")- (BBAL("BALANCESHEET")-
#TestWD))
calculate : #TT = BBAL("NOTE")
calculate : #MINOC = MAX(0, #SpecOCTarg - #OC)
- -------------------------------------
when : IS_TRUE (#BARB ‹ 1 and #0C ‹ SpecOCTarg and CURMONTH > #Holiday)
from : CLASS ( "ROOT" )
pay : CREDIT_ENHANCEMENT ( "SPREAD_ACCT" )
- ----------------------------------------
when : IS_TRUE (#BARB > 0 and #OC ‹ #SpecOCTarg and CURMONTH > #Holiday)
subject to : CEILING ( #MINOC)
from : CLASS ( "ROOT" )
pay : CLASS BALANCE PRO_RATA ( "NOTE" )
- ----------------------------------------
{#NOTE_Prn}
- ---------------------------------------
from : CLASS ( "ROOT" )
pay : AS_INTEREST ("R")
- ------------------------------------
calculate : #BondBal = BBAL("A-1#1","A-2#1","CERT#1")
!! calculate : #OC = MAX( 0, COLL_BAL - #BondBal )
calculate : #OC = MAX( 0, COLL_BAL + CREDIT_ENHANCEMENT (
"SPREAD_ACCT" )_
- BBAL("NOTE")- (BBAL("BALANCESHEET")- #TestWD))
------------------------------------
calculate : #CollPrevBal = COLL_PREV_BAL
- ------------------------------------
calculate : #FGWrapBal = BBAL("NOTE")
- ------------------------------------
calculate : #LastFGBal = #FGBal
calculate : #FGBal = CREDIT_ENHANCEMENT("FG")
calculate : #FGDraw = MAX( 0, #FGBal - #LastFGBal )
calculate : #BARB = #BARB
calculate : #TrackResid = #TrackResid
calculate : #TrackPay = #TrackPay
calculate : #TrackResidWD = #TrackResidWD
calculate : #MaxPayment = MAX(0, #InitOCTarg - #TrackPay -
#TrackResidWD)
calculate : #PriorBal = BBAL("A-1#1","A-2#1")
calculate : #DueR2 = #DueR2
------------------------------------
!
Collateral OVER
!
! Factor --Delay--
! Type Date P/Y BV Use BV for 0
WL 20030601 9999 9999 FALSE
!
! Pool# Type Gross Current Original --Fee-- Maturity Orig ARM
Gross #mos #mos P#mos P#mos Life Reset Life Max Look
! Coupon Factor Balance P/Y BV P/Y BV Term Index
Margin ToRst RstPer ToRst RstPer Cap Cap Floor Negam Back
!! BEGINNING OF COLLATERAL
M 1 "EMPLOYEE" WL 00 WAC 3.7500 (
18617829.45 / 18617829.45 ); 18617829.45 .50
..50 235:4 235:4 239 NO_CHECK ARM PRIME
- -0.5000 1 1 SYNC_INT 17.1738 999 0
0 0 BALLOON SCHED_BOTH 238 AMORT NONE FOR
238 DRAW_TERM 237 MAX_DRAW 26562785.01 GROUP 1
M 2 "NO TEASER" WL 00 WAC 4.2449 (
233633852.92 / 233633852.92 ); 233633852.92
..50 .50 232:3 232:3 235 NO_CHECK ARM PRIME
- -0.0054 1 1 SYNC_INT 17.7230 999 0
0 0 BALLOON SCHED_BOTH 234 AMORT NONE FOR
234 DRAW_TERM 233 MAX_DRAW 448832365.27 GROUP 1
M 3 "TEASER" WL 00 WAC 4.4156 (
147760088.79 / 147760088.79 ); 147760088.79
..50 .50 234:4 234:4 238 NO_CHECK ARM PRIME
0.6377 11 1 SYNC_INT 17.6885 999 0
0 0 BALLOON SCHED_BOTH 237 AMORT NONE FOR
237 DRAW_TERM 236 MAX_DRAW 248758964.88 GROUP 1 TEASER