Determine compliance with prevailing wage requirements, calculate fringe benefit offsets, and estimate total restitution owed.
Wage Determination (Required Rates)
Actual Contractor Payment
* Enter the hourly equivalent of employer-paid benefits (Health, Pension, etc.).
Weekly Hours Worked
Compliance Status:
Hourly Rate Analysis
Total Required Package (Base + Fringe):$0.00
Total Actual Package Paid:$0.00
Hourly Variance (Shortfall):$0.00
Weekly Restitution Estimate
Total Wages Due (per WD):$0.00
Total Wages Paid (Actual):$0.00
Total Back Wages Owed:$0.00
Understanding Davis-Bacon Wage Requirements
The Davis-Bacon Act (DBA) requires that contractors and subcontractors performing on federally funded or assisted contracts in excess of $2,000 for the construction, alteration, or repair of public buildings or public works pay their laborers and mechanics no less than the locally prevailing wages and fringe benefits for corresponding work on similar projects in the area.
How to Use This Calculator
This tool helps contractors, payroll administrators, and compliance officers determine if their current pay rates meet the specific Wage Determination (WD) requirements found in their contract specifications.
WD Base Hourly Rate: The basic hourly rate listed on the General Decision or Wage Determination for the specific labor classification (e.g., Electrician, Carpenter).
WD Fringe Benefit Rate: The hourly amount required for fringe benefits (health, life, vacation, pension, etc.).
Actual Cash Wage: The gross hourly rate listed on the employee's paycheck before taxes.
Actual Fringe Benefits: The annualized cost of third-party bona fide benefits paid by the employer, converted to an hourly rate.
Calculation Logic and Compliance Rules
Under the Davis-Bacon Act, a contractor can discharge their wage obligations by paying the full amount in cash, the full amount in bona fide fringe benefits, or any combination thereof. This is often referred to as "cash in lieu of fringe."
Example: If the WD requires $20.00 Base + $10.00 Fringe (Total $30.00):
You can pay $20.00 Cash and $10.00 in Benefits.
You can pay $30.00 Cash and $0.00 in Benefits.
You can pay $25.00 Cash and $5.00 in Benefits.
However, compliance gets complicated when overtime is involved. While excess fringe benefits can offset the base rate for straight time, the overtime premium (the "half-time") must be calculated based on the basic hourly rate found in the Wage Determination (or the actual cash rate if higher), usually excluding the fringe portion.
Important Note on Overtime (CWHSSA)
This calculator estimates overtime liability based on the standard requirement that overtime is paid at 1.5 times the basic rate of pay. Under DBA, the fringe benefit amount is typically paid at a "straight time" rate for all hours worked, unless the specific WD dictates otherwise. This calculator assumes the standard method: (Base Rate × 1.5) + Fringe Rate for overtime hours.
Disclaimer: This calculator is for informational purposes only and does not constitute legal advice. Davis-Bacon compliance can be complex, involving annualized calculations for fringe benefits and specific state rules. Always consult the Department of Labor (DOL) guidelines or a qualified labor attorney for certified payroll submission.
function calculateDavisBacon() {
// 1. Get Input Values
var reqBase = parseFloat(document.getElementById("reqBaseRate").value);
var reqFringe = parseFloat(document.getElementById("reqFringeRate").value);
var actCash = parseFloat(document.getElementById("actCashRate").value);
var actFringe = parseFloat(document.getElementById("actFringeRate").value);
var regHours = parseFloat(document.getElementById("regHours").value);
var otHours = parseFloat(document.getElementById("otHours").value);
// 2. Validate Inputs
if (isNaN(reqBase) || isNaN(reqFringe) || isNaN(actCash) || isNaN(actFringe)) {
alert("Please enter valid wage rates in all fields.");
return;
}
// Set hours to 0 if empty
if (isNaN(regHours)) regHours = 0;
if (isNaN(otHours)) otHours = 0;
// 3. Calculate Hourly Totals (Straight Time)
var requiredTotalPackage = reqBase + reqFringe;
var actualTotalPackage = actCash + actFringe;
var hourlyVariance = requiredTotalPackage – actualTotalPackage;
// 4. Analyze Compliance (Straight Time)
var isCompliant = actualTotalPackage >= requiredTotalPackage;
// 5. Calculate Weekly Totals (Compliance Logic)
// METHOD: We compare what was OWED vs what was PAID.
// What is OWED?
// Regular Time: (WD Base + WD Fringe) * RegHours
// Overtime: ((WD Base * 1.5) + WD Fringe) * OTHours
// Note: Even if they pay cash in lieu of fringe, the OT premium is based on WD Base.
// Calculating "Wages Due" (The Minimum Requirement)
var dueRegPay = (reqBase + reqFringe) * regHours;
var dueOTPay = ((reqBase * 1.5) + reqFringe) * otHours;
var totalDue = dueRegPay + dueOTPay;
// Calculating "Wages Paid" (What the contractor actually provided)
// Reg Time Paid
var paidReg = (actCash + actFringe) * regHours;
// OT Time Paid
// Caution: If Actual Cash WD Base, the premium is usually based on Actual Cash (FLSA rules overlay),
// but for pure DBA minimum checking, we look if they met the WD minimums.
// To simplify for a "Deficiency Calculator":
// Actual Total Compensation for OT hours usually includes (Actual Cash * 1.5) + Actual Fringe.
var paidOT = ((actCash * 1.5) + actFringe) * otHours;
var totalPaid = paidReg + paidOT;
// 6. Calculate Back Wages
// If totalPaid >= totalDue, generally compliant (monetarily),
// THOUGH technically you can't use excess OT cash to offset ST fringe deficits in some interpretations.
// But DBA allows total package compliance for straight time.
// Let's refine the Back Wage Calculation to be safer:
// Calculate Shortfall per hour.
var backWages = 0;
if (totalDue > totalPaid) {
backWages = totalDue – totalPaid;
isCompliant = false;
} else {
// Even if total is higher, check strictly if Base Rate was respected for OT calculation.
// But mathematically, if TotalPaid >= TotalDue using the formulas above, they likely covered it.
backWages = 0;
}
// 7. Display Results
var resultDiv = document.getElementById("results");
resultDiv.style.display = "block";
var statusBox = document.getElementById("statusBox");
var statusSpan = document.getElementById("complianceStatus");
var statusMsg = document.getElementById("complianceMsg");
document.getElementById("resReqTotal").innerText = "$" + requiredTotalPackage.toFixed(2);
document.getElementById("resActTotal").innerText = "$" + actualTotalPackage.toFixed(2);
// Variance
if (hourlyVariance > 0) {
document.getElementById("resVariance").innerText = "-$" + hourlyVariance.toFixed(2);
document.getElementById("resVariance").style.color = "#c0392b";
} else {
document.getElementById("resVariance").innerText = "+$" + Math.abs(hourlyVariance).toFixed(2);
document.getElementById("resVariance").style.color = "#27ae60";
}
document.getElementById("resWagesDue").innerText = "$" + totalDue.toFixed(2);
document.getElementById("resWagesPaid").innerText = "$" + totalPaid.toFixed(2);
document.getElementById("resBackWages").innerText = "$" + backWages.toFixed(2);
if (isCompliant) {
statusBox.className = "result-box success";
statusSpan.innerHTML = "Compliant";
statusMsg.innerText = "The total hourly compensation meets or exceeds the prevailing wage requirement defined by the Wage Determination.";
} else {
statusBox.className = "result-box error";
statusSpan.innerHTML = "Non-Compliant";
statusMsg.innerText = "The actual compensation is less than the required prevailing wage. Back wages may be owed to the employee.";
}
}