Vendor/phpspreadsheet/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Calculation/Financial.php
public static function ACCRINT($issue, $firstinterest, $settlement, $rate, $par = 1000, $frequency = 1, $basis = 0)
    {
        $issue = Functions::flattenSingleValue($issue);
        $firstinterest = Functions::flattenSingleValue($firstinterest);
        $settlement = Functions::flattenSingleValue($settlement);
        $rate = Functions::flattenSingleValue($rate);
        $par = ($par === null) ? 1000 : Functions::flattenSingleValue($par);
        $frequency = ($frequency === null) ? 1 : Functions::flattenSingleValue($frequency);
        $basis = ($basis === null) ? 0 : Functions::flattenSingleValue($basis);

        //    Validate
        if ((is_numeric($rate)) && (is_numeric($par))) {
            $rate = (float) $rate;
            $par = (float) $par;
            if (($rate <= 0) || ($par <= 0)) {
                return Functions::NAN();
            }
            $daysBetweenIssueAndSettlement = DateTime::YEARFRAC($issue, $settlement, $basis);
            if (!is_numeric($daysBetweenIssueAndSettlement)) {
                //    return date error
                return $daysBetweenIssueAndSettlement;
            }

            return $par * $rate * $daysBetweenIssueAndSettlement;
        }

        return Functions::VALUE();
    }
public static function ACCRINT($issue, $firstinterest, $settlement, $rate, $par = 1000, $frequency = 1, $basis = 0)
    {
        $issue = Functions::flattenSingleValue($issue);
        $firstinterest = Functions::flattenSingleValue($firstinterest);
        $settlement = Functions::flattenSingleValue($settlement);
        $rate = Functions::flattenSingleValue($rate);
        $par = ($par === null) ? 1000 : Functions::flattenSingleValue($par);
        $frequency = ($frequency === null) ? 1 : Functions::flattenSingleValue($frequency);
        $basis = ($basis === null) ? 0 : Functions::flattenSingleValue($basis);

        //    Validate
        if ((is_numeric($rate)) && (is_numeric($par))) {
            $rate = (float) $rate;
            $par = (float) $par;
            if (($rate <= 0) || ($par <= 0)) {
                return Functions::NAN();
            }
            $daysBetweenIssueAndSettlement = DateTime::YEARFRAC($issue, $settlement, $basis);
            if (!is_numeric($daysBetweenIssueAndSettlement)) {
                //    return date error
                return $daysBetweenIssueAndSettlement;
            }

            return $par * $rate * $daysBetweenIssueAndSettlement;
        }

        return Functions::VALUE();
    }
ACCRINT.

Returns the accrued interest for a security that pays periodic interest.

Excel Function:
ACCRINT(issue,firstinterest,settlement,rate,par,frequency[,basis])

@category Financial Functions

@param mixed $issue the security's issue date
@param mixed $firstinterest the security's first interest date
@param 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 float $rate the security's annual coupon rate
@param float $par The security's par value.
If you omit par, ACCRINT uses $1,000.
@param int $frequency the number of coupon payments per year.
Valid frequency values are:
1    Annual
2    Semi-Annual
4    Quarterly
If working in Gnumeric Mode, the following frequency options are
also available
6    Bimonthly
12    Monthly
@param int $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