Loan Interest Capitalization Impact Analyzer

Step 1: Loan & Interest Accrual Details

Enter details about your loan and a period during which interest might accrue without payments (e.g., an in-school period for student loans, a forbearance period).

Duration when interest accrues but isn't paid, leading to potential capitalization (e.g., 4 years in school + 0.5 year grace).
The term over which you will repay the loan principal (original or capitalized).

Step 2: Estimated Impact of Interest Capitalization

What is Interest Capitalization?

Interest capitalization occurs when unpaid accrued interest is added to the principal balance of your loan. Future interest then accrues on this new, larger principal. This typically happens after periods like deferment, forbearance, or (for unsubsidized student loans) after in-school and grace periods if interest wasn't paid.

Scenario 1: WITHOUT Capitalization

(Assumes interest accrued during the "accrual period" was paid off separately or did not accrue against you, e.g., subsidized loan during eligible periods).

Scenario 2: WITH Capitalization

(Assumes interest accrued during the "accrual period" is added to the principal before repayment begins).

Impact of Capitalization Summary:

New Monthly Payment: ${lici_formatCurrency(monthlyPaymentWithCap)}

Total Interest Paid (Repayment): ${lici_formatCurrency(totalInterestWithCapRepayment)}

Total Interest Paid (Overall): ${lici_formatCurrency(totalInterestWithCapOverall)}

Total Amount Repaid: ${lici_formatCurrency(totalPaymentsWithCap)}

`; const impactSummaryDiv = document.getElementById('lici-impact-summary'); impactSummaryDiv.innerHTML = `

Impact of Capitalization Summary:

Increase in Monthly Payment: ${lici_formatCurrency(increaseInMonthlyPayment)}

Additional Interest Paid Due to Capitalization: ${lici_formatCurrency(additionalInterestPaidDueToCap)}

Increase in Total Amount Repaid: ${lici_formatCurrency(increaseInTotalRepaid)}

`; lici_navigateToTab(1); // Show results tab } function lici_generatePDF() { if (typeof window.jspdf === 'undefined' || typeof window.jspdf.jsPDF === 'undefined') { alert('PDF generation library (jsPDF) is not loaded.'); return; } const JSPDF_CONSTRUCTOR = window.jspdf.jsPDF; const tempDoc = new JSPDF_CONSTRUCTOR(); if (typeof tempDoc.autoTable !== 'function') { alert('jsPDF AutoTable plugin is not loaded.'); return; } if (Object.keys(lici_dataForPdf).length === 0) { alert('Please analyze the impact first to generate a PDF report.'); return; } const doc = new JSPDF_CONSTRUCTOR({ orientation: 'p' }); const data = lici_dataForPdf; let yPos = 15; const pageMargin = 15; const pageWidth = doc.internal.pageSize.getWidth(); const usableWidth = pageWidth - (2 * pageMargin); const primaryColor = [59, 130, 246]; // #3b82f6 const headingColor = [30, 64, 175]; // #1e40af const textColor = [52, 78, 99]; // #344e63 const impactColor = [194, 65, 12]; // #c2410c function addMainHeader(text) { doc.setFontSize(16); doc.setFont(undefined, 'bold'); doc.setTextColor(headingColor[0], headingColor[1], headingColor[2]); doc.text(text, pageWidth / 2, yPos, { align: 'center' }); yPos += 12; } function addSectionHeader(text, yOffset = 8) { if (yPos > doc.internal.pageSize.getHeight() - 30) { doc.addPage(); yPos = pageMargin; } doc.setFontSize(12); doc.setFont(undefined, 'bold'); doc.setTextColor(primaryColor[0], primaryColor[1], primaryColor[2]); doc.text(text, pageMargin, yPos); yPos += yOffset; doc.setFont(undefined, 'normal'); } function addParagraph(text, fontSize = 9.5, options = {}) { doc.setFontSize(fontSize); doc.setTextColor(options.color ? options.color[0] : textColor[0], options.color ? options.color[1] : textColor[1], options.color ? options.color[2] : textColor[2]); if (options.fontStyle) doc.setFont(undefined, options.fontStyle); const lines = doc.splitTextToSize(text, usableWidth - (options.indent || 0)); if (yPos + (lines.length * (fontSize * 0.4)) + (options.spacingAfter || 3) > doc.internal.pageSize.getHeight() - 20) { doc.addPage(); yPos = pageMargin; } doc.text(lines, pageMargin + (options.indent || 0), yPos); yPos += (lines.length * (fontSize * 0.4)) + (options.spacingAfter || 3); if (options.fontStyle) doc.setFont(undefined, 'normal'); // Reset font style } addMainHeader("Loan Interest Capitalization Impact Analysis"); // Inputs Summary addSectionHeader("Your Loan & Accrual Details:"); const inputsForPdf = [ ["Original Loan Principal:", lici_formatCurrency(data.originalPrincipal)], ["Annual Interest Rate:", `${data.annualRate.toFixed(2)}%`], ["Period of Unpaid Interest Accrual:", `${data.accrualPeriodYears} years`], ["Loan Repayment Term (Post-Accrual):", `${data.repaymentTermYears} years`], ]; doc.autoTable({ startY: yPos, body: inputsForPdf, theme: 'grid', styles: { fontSize: 9, cellPadding: 2.5, textColor: textColor }, columnStyles: { 0: { fontStyle: 'bold', cellWidth: usableWidth * 0.55 }, 1 : { halign: 'right', cellWidth: usableWidth * 0.45} }, didDrawPage: function (hookData){ yPos = hookData.cursor.y ? hookData.cursor.y +10 : pageMargin; } }); yPos = doc.lastAutoTable.finalY ? doc.lastAutoTable.finalY + 10 : yPos; // Explanation of Capitalization if (yPos > doc.internal.pageSize.getHeight() - 35) { doc.addPage(); yPos = pageMargin; } addSectionHeader("Understanding Interest Capitalization:", 6); addParagraph("Interest capitalization occurs when unpaid accrued interest is added to your loan's principal balance. Future interest is then calculated on this new, higher principal. This commonly happens after periods like deferment or forbearance if interest isn't paid.", 9); yPos += 5; // Scenario Comparison Table if (yPos > doc.internal.pageSize.getHeight() - 70) { doc.addPage(); yPos = pageMargin; } addSectionHeader("Repayment Scenario Comparison:"); const comparisonData = [ ["Metric", "Scenario 1: WITHOUT Capitalization*", "Scenario 2: WITH Capitalization"], ["Principal Entering Repayment", lici_formatCurrency(data.principalNoCap), lici_formatCurrency(data.principalWithCap)], ["Monthly Payment", lici_formatCurrency(data.monthlyPaymentNoCap), lici_formatCurrency(data.monthlyPaymentWithCap)], ["Total Interest Paid (During Repayment)", lici_formatCurrency(data.totalInterestNoCap), lici_formatCurrency(data.totalInterestWithCapRepayment)], ["Interest Accrued & Capitalized", "*N/A (Assumed Paid/Subsidized)", lici_formatCurrency(data.accruedInterest)], ["Total Overall Interest Paid", lici_formatCurrency(data.totalInterestNoCap), lici_formatCurrency(data.totalInterestWithCapOverall)], ["Total Amount Repaid (Principal + All Interest)", lici_formatCurrency(data.totalPaymentsNoCap), lici_formatCurrency(data.totalPaymentsWithCap)] ]; doc.autoTable({ startY: yPos, head: [comparisonData[0]], body: comparisonData.slice(1), theme: 'striped', headStyles: { fillColor: primaryColor, textColor: [255,255,255], fontStyle: 'bold' }, styles: { fontSize: 8.5, cellPadding: 2, textColor: textColor, halign: 'right' }, columnStyles: { 0: { halign: 'left', fontStyle: 'bold' } }, didDrawPage: function (hookData){ yPos = hookData.cursor.y ? hookData.cursor.y +10 : pageMargin; } }); yPos = doc.lastAutoTable.finalY ? doc.lastAutoTable.finalY + 5 : yPos; addParagraph("*Assumes interest during accrual period was paid or covered by subsidy (e.g., Federal Direct Subsidized Loans in-school/grace).", 7.5, {fontStyle:'italic'}); yPos += 5; // Impact Summary if (yPos > doc.internal.pageSize.getHeight() - 40) { doc.addPage(); yPos = pageMargin; } addSectionHeader("Net Impact of Capitalization:"); const impactForPdf = [ ["Increase in Monthly Payment:", {content: lici_formatCurrency(data.increaseInMonthlyPayment), styles: {textColor: impactColor}}], ["Additional Total Interest Paid:", {content: lici_formatCurrency(data.additionalInterestPaidDueToCap), styles: {textColor: impactColor}}], ["Increase in Total Amount Repaid:", {content: lici_formatCurrency(data.increaseInTotalRepaid), styles: {textColor: impactColor}}], ]; doc.autoTable({ startY: yPos, body: impactForPdf, theme: 'plain', styles: { fontSize: 9.5, cellPadding: 2, textColor: textColor }, columnStyles: { 0: { fontStyle: 'bold'} }, didParseCell: function(hookData){ if(hookData.cell.raw.hasOwnProperty('styles')){ Object.assign(hookData.cell.styles, hookData.cell.raw.styles); } }, didDrawPage: function (hookData){ yPos = hookData.cursor.y ? hookData.cursor.y +10 : pageMargin; } }); // Footer Note yPos = doc.internal.pageSize.getHeight() - 25; doc.setFontSize(8); doc.setTextColor(150,150,150); doc.text("This analysis is an estimate based on your inputs. Actual capitalization events and amounts may vary by loan type and servicer policies.", pageMargin, yPos); doc.text("Generated by Loan Interest Capitalization Impact Analyzer", pageWidth - pageMargin, yPos, {align: 'right'}); doc.save("Loan_Interest_Capitalization_Impact.pdf"); }
Scroll to Top