Estimate your potential retirement income under the Blended Retirement System (BRS), combining your military pension and Thrift Savings Plan (TSP) projections.
Retirement Projections
Years Until Retirement:
Estimated Annual BRS Pension:
Projected TSP Balance at Retirement:
Estimated Annual TSP Withdrawal:
Total Projected Annual Retirement Income:
Desired Annual Retirement Income (Adjusted for Inflation):
Retirement Income Gap/Surplus:
function calculateBRSRetirement() {
var currentAge = parseFloat(document.getElementById("currentAge").value);
var desiredRetirementAge = parseFloat(document.getElementById("desiredRetirementAge").value);
var currentYOS = parseFloat(document.getElementById("currentYOS").value);
var totalYOSAtRetirement = parseFloat(document.getElementById("totalYOSAtRetirement").value);
var projectedHigh3BasicPay = parseFloat(document.getElementById("projectedHigh3BasicPay").value);
var currentAnnualBasicPay = parseFloat(document.getElementById("currentAnnualBasicPay").value);
var expectedBasicPayGrowthRate = parseFloat(document.getElementById("expectedBasicPayGrowthRate").value) / 100;
var currentTSPBalance = parseFloat(document.getElementById("currentTSPBalance").value);
var personalTSPContributionRate = parseFloat(document.getElementById("personalTSPContributionRate").value) / 100;
var expectedTSPGrowthRate = parseFloat(document.getElementById("expectedTSPGrowthRate").value) / 100;
var desiredAnnualRetirementIncome = parseFloat(document.getElementById("desiredAnnualRetirementIncome").value);
var inflationRate = parseFloat(document.getElementById("inflationRate").value) / 100;
var safeWithdrawalRate = parseFloat(document.getElementById("safeWithdrawalRate").value) / 100;
var errorMessages = [];
if (isNaN(currentAge) || currentAge <= 0) errorMessages.push("Please enter a valid Current Age.");
if (isNaN(desiredRetirementAge) || desiredRetirementAge <= currentAge) errorMessages.push("Desired Retirement Age must be greater than Current Age.");
if (isNaN(currentYOS) || currentYOS < 0) errorMessages.push("Please enter a valid Current Years of Service.");
if (isNaN(totalYOSAtRetirement) || totalYOSAtRetirement < 10) errorMessages.push("Total Years of Service at Retirement must be at least 10 for BRS pension.");
if (totalYOSAtRetirement < currentYOS + (desiredRetirementAge – currentAge)) errorMessages.push("Total YOS at Retirement cannot be less than Current YOS plus years until retirement.");
if (isNaN(projectedHigh3BasicPay) || projectedHigh3BasicPay <= 0) errorMessages.push("Please enter a valid Projected High-3 Average Basic Pay.");
if (isNaN(currentAnnualBasicPay) || currentAnnualBasicPay <= 0) errorMessages.push("Please enter a valid Current Annual Basic Pay.");
if (isNaN(expectedBasicPayGrowthRate) || expectedBasicPayGrowthRate < 0) errorMessages.push("Please enter a valid Expected Annual Basic Pay Growth Rate.");
if (isNaN(currentTSPBalance) || currentTSPBalance < 0) errorMessages.push("Please enter a valid Current TSP Balance.");
if (isNaN(personalTSPContributionRate) || personalTSPContributionRate 1) errorMessages.push("Personal TSP Contribution Rate must be between 0% and 100%.");
if (isNaN(expectedTSPGrowthRate) || expectedTSPGrowthRate < 0) errorMessages.push("Please enter a valid Expected Annual TSP Growth Rate.");
if (isNaN(desiredAnnualRetirementIncome) || desiredAnnualRetirementIncome < 0) errorMessages.push("Please enter a valid Desired Annual Retirement Income.");
if (isNaN(inflationRate) || inflationRate < 0) errorMessages.push("Please enter a valid Expected Annual Inflation Rate.");
if (isNaN(safeWithdrawalRate) || safeWithdrawalRate 0.1) errorMessages.push("Safe Annual TSP Withdrawal Rate should be between 1% and 10%.");
if (errorMessages.length > 0) {
document.getElementById("errorMessages").innerHTML = errorMessages.join("");
document.getElementById("yearsUntilRetirement").textContent = "";
document.getElementById("estimatedAnnualPension").textContent = "";
document.getElementById("projectedTSPBalance").textContent = "";
document.getElementById("estimatedAnnualTSPWithdrawal").textContent = "";
document.getElementById("totalProjectedAnnualIncome").textContent = "";
document.getElementById("desiredIncomeAdjusted").textContent = "";
document.getElementById("incomeGapSurplus").textContent = "";
return;
} else {
document.getElementById("errorMessages").innerHTML = "";
}
// 1. Years Until Retirement
var yearsUntilRetirement = desiredRetirementAge – currentAge;
// 2. Estimated Annual BRS Pension
// BRS pension multiplier is 2.0% per year of service
var pensionMultiplier = totalYOSAtRetirement * 0.02;
var estimatedAnnualPension = pensionMultiplier * projectedHigh3BasicPay;
// 3. Projected TSP Balance at Retirement
var projectedTSPBalance = currentTSPBalance;
var yearsContributingToTSP = yearsUntilRetirement; // Assuming contributions continue until retirement
for (var i = 0; i < yearsContributingToTSP; i++) {
// Project basic pay for the current year of contribution
var projectedBasicPayForYear = currentAnnualBasicPay * Math.pow((1 + expectedBasicPayGrowthRate), i);
// Calculate TSP contributions for the year
var personalContribution = projectedBasicPayForYear * personalTSPContributionRate;
var matchingContribution = projectedBasicPayForYear * Math.min(personalTSPContributionRate, 0.04); // Max 4% match
var automaticContribution = projectedBasicPayForYear * 0.01; // 1% automatic contribution
var totalAnnualContribution = personalContribution + matchingContribution + automaticContribution;
// Add contributions and apply growth
projectedTSPBalance = (projectedTSPBalance + totalAnnualContribution) * (1 + expectedTSPGrowthRate);
}
// 4. Estimated Annual TSP Withdrawal
var estimatedAnnualTSPWithdrawal = projectedTSPBalance * safeWithdrawalRate;
// 5. Total Projected Annual Retirement Income
var totalProjectedAnnualIncome = estimatedAnnualPension + estimatedAnnualTSPWithdrawal;
// 6. Desired Annual Retirement Income (Adjusted for Inflation)
var desiredIncomeAdjusted = desiredAnnualRetirementIncome * Math.pow((1 + inflationRate), yearsUntilRetirement);
// 7. Retirement Income Gap/Surplus
var incomeGapSurplus = totalProjectedAnnualIncome – desiredIncomeAdjusted;
// Display Results
document.getElementById("yearsUntilRetirement").textContent = yearsUntilRetirement.toFixed(0) + " years";
document.getElementById("estimatedAnnualPension").textContent = "$" + estimatedAnnualPension.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
document.getElementById("projectedTSPBalance").textContent = "$" + projectedTSPBalance.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
document.getElementById("estimatedAnnualTSPWithdrawal").textContent = "$" + estimatedAnnualTSPWithdrawal.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
document.getElementById("totalProjectedAnnualIncome").textContent = "$" + totalProjectedAnnualIncome.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
document.getElementById("desiredIncomeAdjusted").textContent = "$" + desiredIncomeAdjusted.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
document.getElementById("incomeGapSurplus").textContent = "$" + incomeGapSurplus.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
}
// Run on page load with default values
document.addEventListener('DOMContentLoaded', calculateBRSRetirement);
.brs-retirement-calculator-container {
font-family: 'Arial', sans-serif;
background-color: #f9f9f9;
padding: 25px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
max-width: 700px;
margin: 20px auto;
border: 1px solid #ddd;
}
.brs-retirement-calculator-container h2 {
color: #2c3e50;
text-align: center;
margin-bottom: 20px;
font-size: 26px;
}
.brs-retirement-calculator-container p {
color: #555;
line-height: 1.6;
margin-bottom: 15px;
}
.calculator-inputs label {
display: block;
margin-bottom: 8px;
font-weight: bold;
color: #333;
font-size: 15px;
}
.calculator-inputs input[type="number"] {
width: calc(100% – 22px);
padding: 10px;
margin-bottom: 15px;
border: 1px solid #ccc;
border-radius: 5px;
font-size: 15px;
}
.calculator-inputs button {
display: block;
width: 100%;
padding: 12px;
background-color: #007bff;
color: white;
border: none;
border-radius: 5px;
font-size: 18px;
cursor: pointer;
transition: background-color 0.3s ease;
margin-top: 20px;
}
.calculator-inputs button:hover {
background-color: #0056b3;
}
.calculator-results {
background-color: #e9f7ef;
border: 1px solid #d4edda;
border-radius: 8px;
padding: 20px;
margin-top: 25px;
}
.calculator-results h3 {
color: #28a745;
margin-top: 0;
margin-bottom: 15px;
font-size: 22px;
text-align: center;
}
.calculator-results p {
margin-bottom: 10px;
font-size: 16px;
color: #333;
display: flex;
justify-content: space-between;
align-items: center;
}
.calculator-results p strong {
color: #000;
font-size: 17px;
}
.calculator-results span {
font-weight: bold;
color: #0056b3;
text-align: right;
}
.calculator-results p strong span {
color: #28a745; /* For total income */
}
#incomeGapSurplus {
color: #dc3545; /* Red for gap */
}
#incomeGapSurplus.positive {
color: #28a745; /* Green for surplus */
}
// Re-run the script to apply the positive/negative color for gap/surplus
function updateGapSurplusColor() {
var incomeGapSurplusElement = document.getElementById("incomeGapSurplus");
if (incomeGapSurplusElement && incomeGapSurplusElement.textContent) {
var value = parseFloat(incomeGapSurplusElement.textContent.replace(/[^0-9.-]+/g,""));
if (!isNaN(value)) {
if (value >= 0) {
incomeGapSurplusElement.classList.add("positive");
} else {
incomeGapSurplusElement.classList.remove("positive");
}
}
}
}
// Override the original calculateBRSRetirement to include color update
var originalCalculateBRSRetirement = calculateBRSRetirement;
calculateBRSRetirement = function() {
originalCalculateBRSRetirement();
updateGapSurplusColor();
};
// Ensure it runs on initial load
document.addEventListener('DOMContentLoaded', calculateBRSRetirement);
Understanding the Blended Retirement System (BRS) and Your Retirement
The Blended Retirement System (BRS), implemented in 2018, is the default retirement plan for most service members entering the military. It combines a traditional defined benefit (pension) with a defined contribution plan (Thrift Savings Plan or TSP) and matching contributions, offering a blend of immediate and long-term financial benefits.
How the BRS Pension Works
Under BRS, your military pension is calculated differently than the legacy retirement system. Instead of 2.5% per year of service, the BRS pension multiplier is 2.0% per year of service (YOS). This pension is based on your "High-3" average basic pay, which is the average of your highest 36 months of basic pay. For example, if you serve 20 years, your pension will be 40% (20 YOS * 2.0%) of your High-3 average basic pay. If you serve 30 years, it will be 60% (30 YOS * 2.0%) of your High-3.
To be eligible for the BRS pension, you must complete at least 20 years of service. The pension is typically paid out monthly upon retirement from active duty or at age 60 for reservists.
The Thrift Savings Plan (TSP) Component
The TSP is a crucial part of the BRS, providing a portable retirement savings plan similar to a 401(k) for federal employees. The government provides two types of contributions to your TSP account under BRS:
Automatic 1% Contribution: After 60 days of service, the government automatically contributes 1% of your basic pay to your TSP, regardless of whether you contribute yourself. This money is vested after two years of service.
Matching Contributions: After two years of service, the government will match your personal TSP contributions dollar-for-dollar for the first 3% of basic pay you contribute, and then 50 cents on the dollar for the next 2% you contribute. This means if you contribute 5% of your basic pay, the government will contribute an additional 4% (3% + 1%) for a total of 5% matching, plus the automatic 1%, bringing the total government contribution to 5%. These matching contributions are vested immediately.
The power of the TSP lies in its tax advantages (traditional or Roth options) and the compounding growth of your investments over time. Maximizing your personal contributions, especially up to the 5% to receive the full government match, is highly recommended to build a substantial retirement nest egg.
Factors Affecting Your Retirement Projections
Several variables influence your overall retirement picture:
Years of Service: Directly impacts your pension multiplier.
High-3 Average Basic Pay: The higher your basic pay at retirement, the larger your pension.
TSP Contribution Rate: Your personal contributions, combined with government matching, significantly boost your TSP balance.
TSP Growth Rate: The average annual return on your TSP investments. Higher growth rates lead to larger balances.
Inflation Rate: The rate at which the cost of living increases. It's essential to project your desired retirement income in future dollars to maintain your purchasing power.
Safe Withdrawal Rate: The percentage of your TSP balance you can withdraw annually in retirement without running out of money. A common rule of thumb is 4%.
How to Use the BRS Retirement Calculator
This calculator helps you visualize your potential retirement income by combining your estimated BRS pension and projected TSP growth. Input your current financial and service details, along with your retirement goals and assumptions about future growth and inflation. The calculator will then provide:
Your estimated annual BRS pension.
Your projected TSP balance at your desired retirement age.
An estimated annual withdrawal from your TSP based on a safe withdrawal rate.
Your total projected annual retirement income.
A comparison of your projected income against your desired income, adjusted for inflation, showing any potential gap or surplus.
Use this tool to experiment with different contribution rates, retirement ages, and growth assumptions to see how they impact your financial future. It's a powerful way to plan and make informed decisions about your BRS retirement.
Disclaimer
This calculator provides estimates for illustrative purposes only. It relies on the accuracy of your inputs and various assumptions (e.g., consistent growth rates, inflation, and basic pay increases). Actual results may vary significantly. It is recommended to consult with a qualified financial advisor for personalized retirement planning advice.