@@ -371,14 +371,14 @@ package mathlib {
371371 return (monthsToMaturity/period)->ceil();
372372
373373 static query sequenceOfPeriods(sett : OclDate, mat : OclDate, period : int) : Sequence(int)
374- pre: true
374+ pre: period > 0
375375 post: true
376376 activity:
377377 var numPeriods :int := FinanceLib.numberOfPeriods(sett, mat, period);
378378 return Integer.subrange(1, numPeriods);
379379
380380static query couponDates(matur : OclDate, period : int, numPeriods : int) : Sequence(OclDate)
381- pre: true
381+ pre: period > 0
382382post: true
383383activity:
384384 var cpdates : Sequence(OclDate) := Sequence{matur};
@@ -477,7 +477,7 @@ activity:
477477 return Sequence{sv, cd - daysBetween360});
478478
479479 static query calculateCouponPayments(paymentDates : Sequence(OclDate), annualCouponRate : double, dayCountC : String, freq : int) : Sequence(Sequence(double))
480- pre: true
480+ pre: freq > 0
481481 post: true
482482 activity:
483483 var coupon_payments : Sequence(double) := Sequence{};
@@ -517,7 +517,7 @@ activity:
517517 return Sequence{coupon_payments, dates_payments};
518518
519519 static query bondCashFlows(settle : OclDate, matur : OclDate, coupon : double, dayCount : String, freq : int) : Sequence(OclAny)
520- pre: true
520+ pre: freq > 0
521521 post: true
522522 activity:
523523 var period : int := (12 / freq)->oclAsType(int);
@@ -549,7 +549,7 @@ activity:
549549
550550
551551 static query bondPrice(yld : double, settle : OclDate, matur : OclDate, coup : double, dayCount : String, freq : int) : double
552- pre: true
552+ pre: freq > 0
553553 post: true
554554 activity:
555555 var bcfs : Sequence(OclAny) :=
@@ -566,7 +566,7 @@ activity:
566566 return sp;
567567
568568 static query accInterest(issue : OclDate, settle : OclDate, freq : int, coup : double) : double
569- pre: true
569+ pre: freq > 0
570570 post: true
571571 activity:
572572 var period : int := (12/freq)->oclAsType(int);
@@ -575,7 +575,7 @@ activity:
575575 return aif*(coup/freq);
576576
577577static query accumulatedInterest(issue : OclDate, settle : OclDate, freq : int, coup : double, dayCount : String, matur : OclDate) : double
578- pre: true
578+ pre: freq > 0
579579 post: true
580580 activity:
581581 var period : int := (12 / freq)->oclAsType(int);
@@ -629,7 +629,7 @@ static query accumulatedInterest(issue : OclDate, settle : OclDate, freq : int,
629629 return coup*(FinanceLib.days360(d1, settle, dayCount, matur)/360.0);
630630
631631 static query bondPriceClean(Y : double, I : OclDate, S : OclDate, M : OclDate, c : double, dcf : String, f : int) : double
632- pre: true
632+ pre: freq > 0
633633 post: result = FinanceLib.bondPrice(Y,S,M,c,dcf,f) -FinanceLib.accumulatedInterest(I,S,f,c,dcf,M);
634634
635635 }
0 commit comments