On time is not the same as working.
Every maintenance system reports whether the programme ran — compliant, on time, late, missed. Zenith reports that too, and then answers the question those numbers duck: has it stopped anything breaking? Failures between services, the slip nobody decided on, and the cost of both — each computed from evidence the screen will name.
Bilingual EN / FR · Multi-site · WCAG 2.2 AATwo clocks, and the one that decides
A preventive schedule is an interval and an argument about where the interval starts. Zenith makes both explicit, on the schedule itself, in words a planner can check — because almost every bad PM programme is a good one that was set up with the wrong half of this page in mind.
Every three months
Days, weeks, months or years — with month-end clamped, so the 31st of January plus a month is the 28th of February and not the 3rd of March.
Every 500 hours
Lifetime units between services, counted from the reading taken at the last one — not from whatever the counter happens to show today.
Hours or months
The earlier of the two dates. This is what almost every real service manual means, and the schedule records which arm produced the date you're looking at.
Hours and months
The later of the two, chosen deliberately — it is the setting that would leave a standby generator on 500 hours unserviced for a decade, because it never reaches 500 hours.
Counts from the last due date
The service belongs to a grid. The June occurrence is the June occurrence, whether it was signed on the 3rd or the 27th — which is what a statutory date needs.
Counts from the last completion
The interval starts when the work was actually done. Belts changed three weeks late are next due three weeks later — which is what wear needs.
A summer service is now an autumn service
Four cycles of “we got to it a few weeks later” walk a quarterly job three months down the year. Nobody decides that. It happens one reasonable delay at a time, and the only place it is visible is a grid nobody draws. Zenith draws it, and puts the number beside the compliance rate that was quietly reporting everything as fine.
- Zero is the answer for a fixed schedule — and saying so is the point. A fixed programme cannot drift, so the figure is a check rather than a decoration.
- The ideal is counted from completions, not from today — anchoring it to the calendar would report a brand-new schedule as already drifting.
- A holiday move is not drift — the measure runs against the date the interval produced, so the calendar doing its job never reports a well-run programme as slipping a day every September.
- Thirty days is where it turns red — a fortnight's slip on a quarterly service is life; three months of it is a different programme from the one that was approved.
A due date on a day the site is shut is not a due date
The interval says the 7th. The plant is closed. Zenith moves the date forward to the next working day on the calendar you attach — forward only, because a service is allowed to be a day late and is not allowed to be done before its interval has elapsed — and prints the move instead of quietly changing the answer.
- The move is shown, not logged — “moved from 7 Sep — the site is shut that day” sits beside the date, where the person reading it is.
- Fourteen days and it gives up — long enough for any statutory holiday, short enough to stop chasing a calendar that never opens.
- No calendar means the date stands — which is the right answer for a plant that never closes, rather than a setting everybody has to fill in.
- Overdue work raises one occurrence — the outstanding one. The rest are reported as skipped, with their first and last dates.
910 hours to go, at nineteen a day
“Due in October” and “910 hours to go at nineteen a day” are the same answer, and only the second one can be argued with. Every meter-driven date shows its arithmetic: where the counter is, where the target is, and the rate it was projected at.
- The rate is the last ninety days — not a lifetime average. A chiller does six hundred hours in July and twenty-five in February, and its lifetime average describes no month of the year.
- A replaced counter doesn't reset the machine — the old total is banked when the replacement is declared, so an hours-based service isn't scheduled a thousand hours late.
- Impossible readings are refused at entry — a generator cannot have run four thousand hours since Tuesday, and one bad reading poisons every projection built on it afterwards.
- A meter nobody has read is not a trigger — it's a hope. After four months unread the schedule says so by name and refuses to raise work on the projection.
- Nothing is projected past the first occurrence — beyond it the forecast repeats the interval and says so, because assuming the machine keeps being worked this hard is the reader's assumption to make, not the product's.
A rate without a tolerance window is a number with no meaning
Eight days late on a schedule that tolerates ten is on time. Eight days late on one that tolerates two is not. The tolerance belongs to the schedule, not to a report setting — and every rate on the screen was computed against the one this schedule actually carries.
- Occurrences that were never done count against — that single piece of arithmetic is what stops a neglected programme reporting 100%.
- Nothing came due? The rate is blank — a ratio with a zero denominator is not a low score. It is not a number, and a printed 0% is a crisis somebody will act on.
- Overdue means past the date by more than the tolerance — so the badge and the rate can never tell two different stories about the same day.
- Missed occurrences exist only on a fixed schedule — a floating one has no grid, so a service that never happened never came due either, and inventing one would report a machine as neglected for work the product never asked for.
Did the programme actually work?
A preventive programme exists to stop something breaking. Compliance says whether it ran. Zenith also counts what broke between the times it ran — corrective work on the same machine, in the window from one service to the next — and prints the two figures beside each other, where the comparison is unavoidable.
- Only corrective work counts — a modification, an inspection or the preventive job itself would pad the count with things the programme was never meant to stop.
- Zero failures is not automatically success — a three-yearly test last done in 2020 with nothing broken since has been lucky, and the screen says “none, but three occurrences were never done”.
- The window starts at the schedule — a breakdown two years before anybody wrote it is not evidence about it.
- The best run is shown too — the longest stretch of services with nothing failing between them is the optimistic half of the same evidence, and the one that says it was working until something changed.
One procedure, improved everywhere at once
The schedule owns when. The job plan owns what — steps, readings, crew, parts, tools and hazards. One plan is used by every schedule that runs that job, so improving the job improves it everywhere rather than in the next one somebody types out.
Steps that can be checked, and a safety list that can't drift
A plan is a sequence of steps with estimated minutes, a craft and a sign-off flag — plus the crew, parts, tools and hazards the job needs. Four of those five are derived rather than typed, which is the difference between a safety list that is right and one that was right in March.
- Three kinds of step — an instruction to carry out, a measurement to record against limits, and a check to pass or fail against stated criteria.
- A measurement with no limits is called out — otherwise it is a number written down for years while nobody is ever told it was out of range.
- People and hours stay separate — two millwrights for four hours is eight labour hours to a budget and four hours of an afternoon to a scheduler, and a single number tells one of them the wrong thing.
- Hazards are the only list kept by hand — PPE, permits and required certifications derive from them, because four hand-kept lists are four lists that drift apart, with the safety one drifting silently.
- Revising supersedes rather than edits — work was planned under the old text, and “why did we torque that to 90 N·m in 2025” has to stay answerable afterwards.
Thirteen reasons, in the plan's own words
A PM that comes due against a procedure with no steps is a work order that says nothing, and the morning it lands on somebody's list is the wrong time to find out. Zenith asks the question ahead of the date, and answers it in sentences rather than error codes.
- The plan's refusals are carried through verbatim — not restated in the schedule's vocabulary, where they would slowly drift from what the plan page says.
- Faults sort above shortages — a plan whose arithmetic is impossible is wrong wherever it is used; a plan short of filters in Victoria is fine everywhere else.
- Codes are resolved to names —
SOL-DEGREASE-20Lis what the ledger calls it and “degreasing solvent” is what the person holding it calls it. A blocker nobody recognises is a blocker nobody fixes. - Readiness is asked every time, never stored — it changes the moment a certificate lapses or somebody else takes the last filter off the shelf.
The preview is the work order
Every generation screen in every maintenance system is a form describing a work order that does not exist yet, and the first time anybody sees whether the settings were right is the morning something strange appeared. Zenith's preview calls the same function the raise calls: the same draft, priced by the same rules, refused by the same reasons, arriving in the same status.
- Two buttons, not one with a checkbox — raise the occurrence, or raise an extra run. They are different jobs and the wrong one cannot be undone.
- The status it will arrive in is asked, not guessed — a programme that demands a signature gets one, and so does a shutdown job that never asked for one.
- Releasing work never moves a programme — completing it against an occurrence does. The screen says so under the button, because that is the misconception that produces phantom compliance.
- When work is raised lives with the trigger — the interval, the lead days, the tolerance and the calendar are edited in one place, so two screens can never disagree about it.
What we said it would cost, and what it did
Two claims with different reliability, kept side by side and never blended into one number that hides which was which. Planned is arithmetic on the procedure at standard rates. Actual is arithmetic on what people booked. Variance is the only one that is an opinion, and it is the one worth reading.
- Unpriced work is declared, not costed at zero — a craft with no rate and a part with no standard cost are counted and named beside the total, not quietly treated as free.
- A plan nobody can price says “not estimated” — never “$0.00”. A programme reported as free is one that never appears in a review.
- Work still in flight is left out of the average, visibly — letting it in is the specific way a PM cost report gets better the further behind you fall, so the in-flight count is printed instead.
- A service every 18 months is 0.67 a year — rounding that to one overstates a decade of programme by half.
- A meter-only schedule gets no annual figure at all — and naming that gap is the honest answer, as well as the one that prompts somebody to start recording the runtime.
Forty machines, a short plan at each, one person walking them
A round is one visit. Each stop keeps its own readings and raises its own findings, so nobody is asked to close forty work orders at the end of the day without reading them — and the order of the stops is treated as part of the deliverable rather than left to whoever is walking it.
The order is not a detail
A route stored as a set of machines makes the technician work the order out themselves, and they will do it differently every time — which means the readings come from different points in each machine's cycle, and the trend they were recorded for is noise.
- Backtracks are found and costed — “stop 14 goes back into the Science Building”, about 22 minutes a round. A count of backtracks is an observation; minutes a week is an argument.
- Work and travel are shown side by side, never summed — sixty minutes of work and forty-five of walking is not an hour of round, and one number hides which half to fix.
- Every stop needs an answer — an inspection signed off, or a reason nobody could get to it. A round is not a record of anything until every stop has one.
- A skip with no reason is impossible — the confirm button stays disabled until somebody types what happened.
A failed check is a finding, not a reason to leave the job open
The machine went back into service and somebody has to be told. So a failure raises a finding and the inspection still signs off — while a step with no answer at all, or a skip with no reason, stops it dead. Those are different problems and only one of them is the technician's to fix on the roof.
- Three kinds of answer — done, pass or fail, or a reading — with the expectation printed beside the box, because somebody who has to leave the step to find out what “good” means will stop looking.
- Limits are judged as you type — in limits, below the floor, above the ceiling. Units are shown as symbols, not codes: the person holding the meter reads °C.
- There is no draft waiting to be submitted — every answer is written as it is given, so losing signal half-way through a rooftop service loses the last step, not the morning.
- Sign-off is refused in the step's own words — “Record supply air temperature” has no reading. Not a list of field identifiers.
- Findings are listed oldest first — a finding nobody closes is the failure mode findings exist to expose, and a list sorted by newest hides exactly the ones that matter.
Everything a schedule touches
Scope, with visible carve-outs
One machine, a named list, a whole class or the fleet. Class and fleet follow the asset registry rather than copying it, so a machine added tomorrow is covered tomorrow — and exclusions are shown struck through, because an exclusion nobody can see is a lie.
Documents that will still be current
Nothing is attached. The pack is gathered live from the schedule, the plan, the machine, its model and its hazards — and the question it answers is whether any of it expires before the job next runs.
Where we looked, including the empty places
Two documents from five places searched is a fact. Two documents from nowhere stated is a shrug — so the sources that held nothing are listed as well.
What comes out
Priority, team, supervisor, assignee, whether the plan travels with the job and whether it needs approving. Work that must be approved by nobody is work that can never start, so naming an approver is required when approval is.
Tools and certifications
A wrench out of calibration, a gauge on loan, a certification nobody currently holds — all read at the moment the question is asked, never from a roster somebody wrote down in March.
The machine's own view
Open a machine and its schedules, its open findings and its meters are on one tab — with the finding above the numbers, because it is somebody's outstanding obligation on that equipment.
Plans reach machines through the model
A procedure is written from a manual, and every machine of that model inherits it — instead of a per-machine list somebody has to keep up to date forever.
Your words, everywhere
Rename Schedule, Route or Inspection and it changes what people read — never what a filter matches on.
Site-scoped throughout
Every list, round, forecast and figure respects the sites you're authorized for — enforced in the query, not by hiding a menu item.
A programme that stays explicable
Preventive maintenance is the part of a system people inherit rather than build. Five years on, somebody has to be able to ask why a schedule says what it says — and get an answer rather than a shrug.
Referenced, never retyped
A schedule carries an asset id and a plan id and resolves them when you read it. Rename the machine and every screen renames with it.
Supersede, don't overwrite
Plans revise into new versions, and a reading is always judged by the limits that were in force when it was taken.
Bilingual by birth
Full en-CA / fr-CA parity on every screen, hint, empty state and refusal — plurals handled properly, not by concatenation.
Accessible to everyone
WCAG 2.2 AA as a build rule: real tab semantics, states announced in words, and focus that moves to the field an error refers to.
Before you book the demo
Fixed or floating — which should we use?
Does it raise the work orders automatically overnight?
What happens when a PM is months behind?
Can one schedule run on hours and months together?
What if nobody has been reading the meter?
Why is compliance blank instead of 0%?
How is “on time” actually decided?
How do we know the PM is actually preventing anything?
Can a due date land on a shutdown or a public holiday?
What stops a PM being raised against a procedure that isn't ready?
If we improve a job plan, what happens to the schedules using it?
Do you support condition-based and event triggers?
Bring the schedule nobody quite trusts.
Every site has one — the quarterly that has quietly become an annual, or the compliance figure everyone rounds up before the meeting. We'll set it up in Zenith with your interval, your tolerance and your working calendar, and show you what it has actually been doing.
Elsewhere in Zenith
Canadian industry guides
Standards and regulators
Standards are named by number, title and scope only. CSA and ULC publications are paywalled — read the standard itself before building a compliance programme on any summary.