You are here

public static function PHPExcel_Calculation_Financial::DISC in Loft Data Grids 6.2

Same name and namespace in other branches
  1. 7.2 vendor/phpoffice/phpexcel/Classes/PHPExcel/Calculation/Financial.php \PHPExcel_Calculation_Financial::DISC()

* DISC * * Returns the discount rate for a security. * * Excel Function: * DISC(settlement,maturity,price,redemption[,basis]) * * @access public * @category Financial Functions *

Parameters

mixed settlement The security's settlement date.: * The security settlement date is the date after the issue * date when the security is traded to the buyer. * @param mixed maturity The security's maturity date. * The maturity date is the date when the security expires. * @param integer price The security's price per $100 face value. * @param integer redemption The security's redemption value per $100 face value. * @param integer basis The type of day count to use. * 0 or omitted US (NASD) 30/360 * 1 Actual/actual * 2 Actual/360 * 3 Actual/365 * 4 European 30/360 * @return float

File

vendor/phpoffice/phpexcel/Classes/PHPExcel/Calculation/Financial.php, line 1036

Class

PHPExcel_Calculation_Financial
PHPExcel_Calculation_Financial

Code

public static function DISC($settlement, $maturity, $price, $redemption, $basis = 0) {
  $settlement = PHPExcel_Calculation_Functions::flattenSingleValue($settlement);
  $maturity = PHPExcel_Calculation_Functions::flattenSingleValue($maturity);
  $price = PHPExcel_Calculation_Functions::flattenSingleValue($price);
  $redemption = PHPExcel_Calculation_Functions::flattenSingleValue($redemption);
  $basis = PHPExcel_Calculation_Functions::flattenSingleValue($basis);

  //	Validate
  if (is_numeric($price) && is_numeric($redemption) && is_numeric($basis)) {
    $price = (double) $price;
    $redemption = (double) $redemption;
    $basis = (int) $basis;
    if ($price <= 0 || $redemption <= 0) {
      return PHPExcel_Calculation_Functions::NaN();
    }
    $daysBetweenSettlementAndMaturity = PHPExcel_Calculation_DateTime::YEARFRAC($settlement, $maturity, $basis);
    if (!is_numeric($daysBetweenSettlementAndMaturity)) {

      //	return date error
      return $daysBetweenSettlementAndMaturity;
    }
    return (1 - $price / $redemption) / $daysBetweenSettlementAndMaturity;
  }
  return PHPExcel_Calculation_Functions::VALUE();
}