A Pro Rata Wheel is a tool primarily used in the insurance industry to determine the distribution of premium when a policy is cancelled or modified mid-term. Traditionally, this was a physical paper wheel (a circular slide rule) used by agents to quickly calculate the number of days between dates and find the corresponding decimal factor for "earned" versus "unearned" premium.
How the Calculation Works
The Pro Rata calculation assumes that the risk and cost are spread evenly across every day of the policy term. Unlike "Short Rate" cancellation (which penalizes the policyholder for early termination), Pro Rata is a "fair" distribution based strictly on time.
Step 1: Determine the total number of days in the original policy period.
Step 2: Calculate how many days the policy was actually in force (Effective Date to Cancellation Date).
Step 3: Divide the days in force by the total term days to get the Pro Rata Factor.
Step 4: Multiply the Total Premium by the factor to find the Earned Premium.
Example Calculation
Imagine a policy with a total premium of $1,000. It runs from January 1st to December 31st (365 days). If the policy is cancelled on July 1st, exactly 181 days have elapsed.
function calculateProRata() {
var effDateVal = document.getElementById("effectiveDate").value;
var expDateVal = document.getElementById("expirationDate").value;
var canDateVal = document.getElementById("cancelDate").value;
var premium = parseFloat(document.getElementById("totalPremium").value);
if (!effDateVal || !expDateVal || !canDateVal || isNaN(premium)) {
alert("Please fill in all dates and the premium amount correctly.");
return;
}
var effDate = new Date(effDateVal);
var expDate = new Date(expDateVal);
var canDate = new Date(canDateVal);
// Time difference in milliseconds
var totalTime = expDate.getTime() – effDate.getTime();
var elapsedTime = canDate.getTime() – effDate.getTime();
// Convert to days
var totalDays = Math.ceil(totalTime / (1000 * 3600 * 24));
var elapsedDays = Math.ceil(elapsedTime / (1000 * 3600 * 24));
var remainingDays = totalDays – elapsedDays;
if (totalDays <= 0) {
alert("Expiration date must be after the effective date.");
return;
}
if (elapsedDays totalDays) {
alert("Cancellation date cannot be after the expiration date.");
return;
}
var factor = elapsedDays / totalDays;
var earned = premium * factor;
var unearned = premium – earned;
document.getElementById("totalTermDays").innerText = totalDays;
document.getElementById("daysElapsed").innerText = elapsedDays;
document.getElementById("daysRemaining").innerText = remainingDays;
document.getElementById("proRataFactor").innerText = factor.toFixed(5);
document.getElementById("earnedPremium").innerText = earned.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("unearnedPremium").innerText = unearned.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("resultDisplay").style.display = "block";
}