nfTlWNl rn Ѻq$³*%yNk9SVBŹ!SOY˯ID Ѻq$³*%yNk9S8jnM/=uRqCO&oAY\QN#]>\*]MpWmI\٨z#t`W _#1Iķխ}`[W">/m6a7{K]}eЄe#2 ` d$knV)=} Ѻq$³*%yNk9Sz ] 𓼾,_NgpxZcl#+cgQ]^K%LJq! c! Iy> ĢQ$3B1y~rƄ]TWpLȺfrg`@}<)?|P7x;ɸڠa&3 I]C63 ĢQ$3m-cNzuIߨ isPz% c"q5'{sFVsC^'+;dܭ.CiL*S A"(ܑ5jKA jIy> ĢQ$3'x6#)w*q(ah\64^ zK>eASέ':y!`XUZ}ãDž8C!Nψ~b+55.`taSŬb A{ 좢E)ٛKTl^g2»eB @M= nA:\V簻e'ϷxZ*|3Osӑ3 93p_rB%^=%IMCjf+y:U,R@Rz%9k[Fyָ X$o(U}E bu&ޛ[ i1m?;; <j-r*׍ cָ X$o(U}E 2@vz&gc* YrnތI\8~#e`-է%ȟhIBQ1`Eӷx @ = ĢQ$3)F0|pwk︍EJ Z]cb&3 I]C63 ĢQ$3Fpa{suIQڕag=mӸ*'%w,q5jx7fTB uDH{/}*"k..72<2\|^C'pۆKCmcPUy Wmv/U5,o\ZK ,(X *&?^VE0"&A4.Z`ϫP=7S'qFpla`'jH*xI=m0vD7ZUx2qS@- ҷ1ؚq aSΊDw^D4 ?6>@aG>H&08oPqZZ:(JO찞"L܌ov; ?6>@aG>yL$ ,v5Azd&% QZD 'vKdLPj8EۙmjrU|] -m"ES4r8|=B;Np7J8sl"r +8栦Wa#oSJ$&Y\ȸAMEVչ"u4Hpla`'jH*xI=m0vD7K-0:iC=aq_Sw| ?6>@aG>k"^BAj D͜NKɨ\G߾nnG;6#ďNFMSG/VFa8^\tQ8bf ׵ &Q9G`[asO4!f1ېGH"ttyֳW+ѐ~ERb4YW@H|3O#70'. ivEӽd9#<~#@糝6}|F"AL&e|%wb2/oxDŽ`d iZ~n*U=* Q:;ni@-m 8buuUDY'7H 04!f1ېGH"tt@INE8Kci#糝6}E:;-Susgzd\c0뗵z)y4!f1ېGH"ttG)9,7}=1mcghty*WM!B){DWx€n"18{硖K}+68nN4SQ^ PтNM,$սFV  4T ZqmK@~'Z*tf0 vƁ}_gW曒kSsNtjX{.27oòD,H:vG^b&¢]-ɥ9>P|GU.PSG4'+\P,v^N(咎sK(ñ4p}Ą.h:n*UQE>W;&Q_eNB VKyvJo7.= kLI) n͢?Y{NQ֯齱/Y,nZf.07,J(`I! rֿ+cXBcc`֡ꡍ05Zg(Լ9:!izek`ov+|Bȩm| ;5D\~˖^yqSzbZB:2(6`j+/KV &~y:--]'QO̷X4!5terEUɅ)/Θ][#Šü/6~_dfOL($tݜM?g}^.&vc%1H~'>~R/q'-Vax=  +̥Bլ0SSkJb^ saЦs#o!<-}zK eMkM:EmH A ĢQ$3Pk#hԢ۷ q! ``5 JQ8(yŇy<'5'\0A֐fԷs J1cAuk4zA ĢQ$3-yOۍ8xk QūM#[s 5-X pX7< -ȑ sQ'Yu<T8B!'_քgx ĢQ$3 8kII8 [2eYvL[MvdgcYDת4rQ)*g;Y21|=kݙnuB1A)Tm}FϊIo?*0uqS☽p>6CrQnpc\}&yaJklbnż_qo)2P8}&_Dž8C!N$g&4=5,3BL6@H=2fΐGB3Q=v.gH ĢQ$3Ujw3it^(gXj:}Fղ{1YEo ĢQ$31B3|kӑa 5Iô0lN$74r-& ĢQ$3czM};X|NLJdVhkdm, * 3 Actual/365 * 4 European 30/360 * * @return float|string */ public static function interest( $settlement, $maturity, $investment, $redemption, $basis = FinancialConstants::BASIS_DAYS_PER_YEAR_NASD ) { $settlement = Functions::flattenSingleValue($settlement); $maturity = Functions::flattenSingleValue($maturity); $investment = Functions::flattenSingleValue($investment); $redemption = Functions::flattenSingleValue($redemption); $basis = ($basis === null) ? FinancialConstants::BASIS_DAYS_PER_YEAR_NASD : Functions::flattenSingleValue($basis); try { $settlement = SecurityValidations::validateSettlementDate($settlement); $maturity = SecurityValidations::validateMaturityDate($maturity); SecurityValidations::validateSecurityPeriod($settlement, $maturity); $investment = SecurityValidations::validateFloat($investment); $redemption = SecurityValidations::validateRedemption($redemption); $basis = SecurityValidations::validateBasis($basis); } catch (Exception $e) { return $e->getMessage(); } if ($investment <= 0) { return ExcelError::NAN(); } $daysBetweenSettlementAndMaturity = Functions::scalar(DateTimeExcel\YearFrac::fraction($settlement, $maturity, $basis)); if (!is_numeric($daysBetweenSettlementAndMaturity)) { // return date error return $daysBetweenSettlementAndMaturity; } return (($redemption / $investment) - 1) / ($daysBetweenSettlementAndMaturity); } }