<?php 

error_reporting(-1);

function calculateLoan($loan, $percent, $monthlyPayment, $taxRate = 0)
{
    $month = 0;
    $totalPayment = 0;

    while ($loan > 0) {
        $totalPayment += $monthlyPayment;
        $loan += $loan * $percent;

        if ($loan + $taxRate > $monthlyPayment) {
            $loan -= ($monthlyPayment - $taxRate);
        } else {
            $left = $monthlyPayment - ($loan + $taxRate);
            $loan = 0;
        }

        $month++;
    }

    return array(
        'total' => round($totalPayment - $left, 2),
        'month' => $month,
        'left'  => round($left, 2),
    );
}

$loan           = 40000;
$monthlyPayment = 5000;
$taxRate        = $monthlyPayment * 0.03;
$percent        = 0.03;

$data = calculateLoan($loan, $percent, $monthlyPayment, $taxRate);

echo "Выплачено: " . $data['total'] . " рублей.\n" . "За " . $data['month'] . " месяцев.\n" . "В конце месяца на булочки осталось: " . $data['left'] . " рублей.\n";