How to Calculate Overtime with Multiple Pay Rates

Blended Overtime Calculator for Multiple Pay Rates body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; line-height: 1.6; color: #333; max-width: 800px; margin: 0 auto; padding: 20px; background-color: #f9f9f9; } .calculator-wrapper { background: #fff; padding: 30px; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.1); margin-bottom: 40px; } .calc-title { text-align: center; margin-bottom: 25px; color: #2c3e50; font-size: 28px; font-weight: 700; } .input-group { display: flex; flex-wrap: wrap; gap: 15px; margin-bottom: 20px; padding-bottom: 20px; border-bottom: 1px solid #eee; } .job-section { width: 100%; background-color: #f8f9fa; padding: 15px; border-radius: 8px; margin-bottom: 10px; border: 1px solid #e9ecef; } .job-title { font-weight: 600; margin-bottom: 10px; color: #555; display: block; } .input-col { flex: 1; min-width: 200px; } label { display: block; margin-bottom: 8px; font-weight: 600; font-size: 14px; color: #555; } input[type="number"] { width: 100%; padding: 12px; border: 1px solid #ddd; border-radius: 6px; font-size: 16px; box-sizing: border-box; transition: border-color 0.2s; } input[type="number"]:focus { border-color: #3498db; outline: none; } .btn-calculate { width: 100%; background-color: #2980b9; color: white; border: none; padding: 15px; font-size: 18px; border-radius: 6px; cursor: pointer; font-weight: 700; transition: background-color 0.2s; margin-top: 10px; } .btn-calculate:hover { background-color: #21618c; } .results-area { margin-top: 25px; background-color: #ecf0f1; padding: 20px; border-radius: 8px; display: none; } .result-row { display: flex; justify-content: space-between; margin-bottom: 12px; padding-bottom: 12px; border-bottom: 1px solid #dcdcdc; } .result-row:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; } .result-label { color: #7f8c8d; font-weight: 500; } .result-value { font-weight: 700; color: #2c3e50; } .final-total { background-color: #2ecc71; color: white; padding: 15px; border-radius: 6px; margin-top: 15px; } .final-total .result-label { color: white; } .final-total .result-value { color: white; font-size: 1.2em; } .article-content h2 { color: #2c3e50; margin-top: 30px; border-bottom: 2px solid #3498db; padding-bottom: 10px; } .article-content h3 { color: #34495e; margin-top: 25px; } .article-content p, .article-content li { color: #444; font-size: 16px; } .article-content ul { margin-bottom: 20px; } .step-box { background: #fff; border-left: 4px solid #3498db; padding: 15px; margin: 15px 0; box-shadow: 0 2px 5px rgba(0,0,0,0.05); }
Blended Overtime Calculator
Job Position #1
Job Position #2
Job Position #3 (Optional)
Total Hours Worked: 0.00
Total Straight-Time Earnings: $0.00
Weighted Average Rate (Regular Rate): $0.00 / hr
Overtime Hours: 0.00
Overtime Premium Rate (0.5x): $0.00 / hr
Total Overtime Premium Pay: $0.00
Total Gross Pay: $0.00

How to Calculate Overtime with Multiple Pay Rates

Calculating overtime becomes complex when an employee works two or more different jobs at different hourly rates within the same workweek. According to the Fair Labor Standards Act (FLSA), you cannot simply pay overtime based on the lowest rate or an arbitrary rate. Instead, you must calculate the Weighted Average Rate (also known as the Blended Rate).

This calculator determines the correct gross pay by blending the rates of all jobs performed to establish the regular rate of pay for that specific week.

The Weighted Average Formula

The FLSA standard method for calculating overtime for multiple pay rates involves these specific steps:

Step 1: Calculate Total Straight-Time Earnings
Multiply the hours worked in each job by its specific hourly rate. Add these together to get the total straight-time earnings.
Step 2: Determine the Regular Rate
Divide the Total Straight-Time Earnings by the Total Hours Worked (including overtime hours). This gives you the Weighted Average Rate.
Step 3: Calculate Overtime Premium
Since the straight-time for all hours (including overtime hours) was already calculated in Step 1, the employee is still owed the "half-time" premium for hours over 40. Multiply the Overtime Hours by 0.5 times the Weighted Average Rate.

Example Calculation

Let's look at a realistic scenario for an employee working two roles:

  • Job A: 30 hours at $20.00/hour
  • Job B: 20 hours at $15.00/hour
  • Total Hours: 50 hours

The Math:

  1. Straight Time: (30 × $20) + (20 × $15) = $600 + $300 = $900
  2. Regular Rate: $900 ÷ 50 hours = $18.00/hour
  3. Overtime Premium Rate: $18.00 × 0.5 = $9.00/hour
  4. Overtime Pay: 10 OT hours × $9.00 = $90
  5. Total Gross Pay: $900 + $90 = $990.00

Why Not Use the Highest Rate?

While employers are legally allowed to pay overtime based on the highest rate earned or the rate associated with the specific overtime hours worked (if agreed upon in advance), the Weighted Average method is the standard requirement absent such agreements. It ensures fairness by averaging the value of labor provided across the entire workweek.

function calculateMultipleRates() { // Retrieve inputs using var var h1 = parseFloat(document.getElementById("hours1").value) || 0; var r1 = parseFloat(document.getElementById("rate1").value) || 0; var h2 = parseFloat(document.getElementById("hours2").value) || 0; var r2 = parseFloat(document.getElementById("rate2").value) || 0; var h3 = parseFloat(document.getElementById("hours3").value) || 0; var r3 = parseFloat(document.getElementById("rate3").value) || 0; var threshold = parseFloat(document.getElementById("otThreshold").value) || 40; // Step 1: Total Straight Earnings (Base Pay for ALL hours) var earnings1 = h1 * r1; var earnings2 = h2 * r2; var earnings3 = h3 * r3; var totalStraightEarnings = earnings1 + earnings2 + earnings3; // Step 2: Total Hours var totalHours = h1 + h2 + h3; // Initializing result variables var weightedRate = 0; var otHours = 0; var otPremiumRate = 0; var otPay = 0; var totalGrossPay = 0; if (totalHours > 0) { // Step 3: Weighted Average Rate (Regular Rate) weightedRate = totalStraightEarnings / totalHours; // Step 4: Calculate Overtime if (totalHours > threshold) { otHours = totalHours – threshold; // The employee has already been paid straight time for these hours in Step 1. // We owe them the "half" of the time-and-a-half based on the weighted rate. otPremiumRate = weightedRate * 0.5; otPay = otHours * otPremiumRate; } totalGrossPay = totalStraightEarnings + otPay; } // Display Results with formatting document.getElementById("displayTotalHours").innerText = totalHours.toFixed(2); document.getElementById("displayStraightEarnings").innerText = "$" + totalStraightEarnings.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById("displayWeightedRate").innerText = "$" + weightedRate.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2}) + " / hr"; document.getElementById("displayOTHours").innerText = otHours.toFixed(2); document.getElementById("displayOTPremiumRate").innerText = "$" + otPremiumRate.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2}) + " / hr"; document.getElementById("displayOTPay").innerText = "$" + otPay.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2}); document.getElementById("displayTotalPay").innerText = "$" + totalGrossPay.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2}); // Show result container document.getElementById("resultContainer").style.display = "block"; }

Leave a Comment