Export Image

PTO accrual for a mid-year hire: monthly vs annual policies

tresor4k

0 views in last 90 days
Last edited Oct 03, 2026
Created on Oct 03, 2026

PTO accrual for a mid-year hire: monthly vs annual (front-loaded, prorated) policies

Line chart of paid-time-off days accrued during 2026 under two kinds of leave policy: monthly accrual, and an annual grant that is front-loaded and prorated in the hire year.

What the chart shows

  • Days accrued at the last day of each month of 2026 (Jan 31 to Dec 31)
  • Employees hired on March 1, 2026 and July 1, 2026, plus one hired on March 1, 2020 (past the 5-year tenure tier for all of 2026)
  • Solid line: monthly accrual. Dashed line: annual grant
  • Within the hire year both policies reach the same total by December 31; the annual grant makes it available from the hire month

Year-end values in data.csv: hired March 1, 2026: 12.5 days (monthly and annual); hired July 1, 2026: 7.5 days (monthly and annual); hired March 1, 2020: 20 days (monthly and annual). Example: on June 30, 2026 the March hire has 5 days under monthly accrual and 12.5 days under the annual grant.

Calculation rule

  1. Months worked = months from max(hire date, January 1) through the as-of month; the hire month counts in full.
  2. Years of service = days from hire to as-of date / 365; the tier bonus applies once years >= threshold.
  3. Monthly: accrued = months worked x (rate + tier bonus), capped at the annual cap.
  4. Annual: accrued = yearly rate x months from the hire month through December / 12 in the hire year (full rate afterwards), 0 before the hire date, capped at the annual cap.

Example policy

Parametric example, not a recommended or statutory policy:

  • 15 days a year: 1.25 days a month (monthly) or 15 days granted up front (annual)
  • Annual cap 15 days, no tenure tier
  • Employee hired in 2020: same policy with a tier of +5 days a year from 5 years of service (5/12 day a month, or 5 days a year), annual cap 20 days

Example policy, not legal advice; state leave laws not encoded.

Data

Generated by the open-source Go package pto (codeberg.org/tresor2k/tabletemplates-go/pto), using AccruedDays, EffectiveRate and YearsOfService. No value is typed by hand. Columns: series, policy, hire_date, tier, as_of, years_of_service, effective_rate (days a month for monthly, days a year for annual), accrued_days (days). Floats are written unrounded. Every row was recomputed by an independent script from the rules above (0 differences).

Links:

Built with D3 v7. Code: MIT.

MIT Licensed