VCT Finish Layer Count 2026

VCT Floor Finish Coat Count Optimizer — Burnishing Response, Repairability, and Slip Outcome

This repository accompanies the Binx Professional Cleaning technical guide: VCT Finish Layer Count Optimization: Burnishing Response, Repairability, and Slip Outcome


Overview

Vinyl composition tile (VCT) floor finish programs fail in two directions: too few coats and too many. Too few coats produce a floor that won't burnish to adequate gloss, wears through quickly, and can't be spot-repaired. Too many coats create adhesion failure, burnishing heat risk, and strip cycles that cost 3–4× the standard rate.

This project provides:

Developed to support floor maintenance program design for commercial facilities across North Bay and Sudbury, Ontario. More at binx.ca/floor-care.php.


Quick Start

Python

pip install vct-finish-layer-count-2026
from vct_finish_layer_count_2026 import (
    FinishType, TrafficLevel, ZoneType,
    assess_coat_count, assess_cof
)

result = assess_coat_count(
    finish_type=FinishType.ACRYLIC_ZINC,
    traffic_level=TrafficLevel.MEDIUM,
    coat_count=4,
)
print(result.burnish_response.rating)        # 'good'
print(result.burnish_response.gloss_3pass)   # 74
print(result.repairability.score)            # 8
print(result.recommendation.action)          # 'maintain'

cof = assess_cof(
    finish_type=FinishType.ACRYLIC_ZINC,
    coat_count=4,
    zone_type=ZoneType.WET_GENERAL,
)
print(cof.static_cof_wet)          # 0.44
print(cof.passes_nfpa_wet)         # False
print(cof.action_required)         # 'anti_slip_treatment_required'

CLI

vct-assess coat-count \
    --finish-type acrylic_zinc \
    --traffic-level medium \
    --coat-count 4

vct-assess cof \
    --finish-type acrylic_zinc \
    --coat-count 6 \
    --zone-type wet_general

JavaScript

npm install @veronicacaledon/vct-finish-layer-count-2026
const { assessCoatCount, FinishType, TrafficLevel } = require('@veronicacaledon/vct-finish-layer-count-2026');

const result = assessCoatCount({
  finishType: 'acrylic_zinc',
  trafficLevel: 'medium',
  coatCount: 5,
});

console.log(result.burnishResponse.rating);    // 'good'
console.log(result.repairability.score);       // 9
console.log(result.recommendation.action);    // 'maintain'

Rust

cargo add vct-finish-layer-count-2026
use vct_finish_layer_count_2026::{assess_coat_count, FinishType, TrafficLevel};

let result = assess_coat_count(FinishType::AcrylicZinc, TrafficLevel::Medium, 5);
println!("{}", result.burnish_response.rating);   // "good"
println!("{}", result.repairability.score);       // 9

Ruby

gem install vct_finish_layer_count_2026
require 'vct_finish_layer_count_2026'

result = VctFinishLayerCount2026.assess_coat_count(
  finish_type: :acrylic_zinc,
  traffic_level: :medium,
  coat_count: 5
)
puts result[:burnish_response][:rating]   # "good"
puts result[:repairability][:score]       # 9

Datasets

Four CSV files are included in the datasets/ directory and published to Hugging Face and Kaggle:

File Records Description
coat-count-burnish-response.csv 32 Gloss units (pre/1-pass/3-pass burnish) by coat count, finish type, and RPM
vct-finish-cof-reference.csv 26 Static/dynamic COF dry+wet vs. OSHA/NFPA/CSA/OBC thresholds
vct-finish-repairability.csv 28 Repairability score, strip difficulty, strip time, adhesion risk
vct-finish-standards-crosswalk.csv 15 Regulatory requirements mapped to coat count and finish type

Data compiled from manufacturer technical data sheets (Spartan Chemical, Diversey, SC Johnson Professional), ASTM D2047, NFPA 101 (2021), CSA B651-12, Ontario Building Code O. Reg. 332/12, and ISSA Guidelines 540 and 750.


Calculator Inputs and Outputs

assess_coat_count(finish_type, traffic_level, coat_count)

Inputs: | Parameter | Type | Values | |-----------|------|--------| | finish_type | enum | acrylic_zinc, acrylic_no_metal, high_solids | | traffic_level | enum | low, medium, high, extreme | | coat_count | int | 1–20 |

Output fields: | Field | Description | |-------|-------------| | burnish_response.gloss_initial | Gloss units (GU) before burnishing | | burnish_response.gloss_1pass | GU after 1 burnish pass | | burnish_response.gloss_3pass | GU after 3 burnish passes | | burnish_response.rating | poor / fair / good / excellent | | burnish_response.heat_risk | low / medium / high / very_high | | repairability.score | 1–10 (10 = easiest to repair) | | repairability.spot_repair_viable | bool | | repairability.strip_required | bool | | repairability.strip_difficulty | easy / moderate / hard / very_hard / extreme | | repairability.strip_time_per_1000sqft | Minutes per 1,000 sq ft | | recommendation.action | add_coats / maintain / plan_strip / strip_now | | recommendation.optimal_range | Tuple of (min, max) coat count for this traffic level | | recommendation.coats_to_strip_trigger | Coats remaining before mandatory strip | | recommendation.notes | Plain-language advisory |

assess_cof(finish_type, coat_count, zone_type)

Inputs: | Parameter | Type | Values | |-----------|------|--------| | finish_type | enum | acrylic_zinc, acrylic_no_metal, high_solids | | coat_count | int | 0–20 | | zone_type | enum | dry_general, wet_general, accessible_route, healthcare_wet |

Output fields: | Field | Description | |-------|-------------| | static_cof_dry | Modelled static COF on dry surface | | static_cof_wet | Modelled static COF on wet surface | | passes_osha_dry | bool (threshold: 0.50) | | passes_nfpa_wet | bool (threshold: 0.50) | | passes_csa_accessible | bool (threshold: 0.60) | | passes_obc_healthcare | bool (threshold: 0.60 wet) | | slip_risk_rating | low / medium / medium_high / high / very_high | | action_required | none / monitor / anti_slip_treatment_required / strip_and_retreat |


Standards Reference

Standard Body Threshold Applies To
OSHA 29 CFR 1910.22 US Federal 0.50 COF dry All commercial floors
ASTM D2047 ASTM Test method COF measurement
NFPA 101 Life Safety Code NFPA 0.50 COF wet Wet-exposed zones
CSA B651-12 CSA 0.60 COF dry Accessible routes (AODA)
Ontario Building Code Ontario 0.60 COF wet Healthcare wet areas
ISSA Guideline 750 ISSA Strip at 8–10 coats Operational standard

Repository Structure

vct-finish-layer-count-2026/
├── datasets/               ← 4 reference CSV files
├── engines/
│   ├── python/             ← PyPI: vct-finish-layer-count-2026
│   ├── npm/                ← npm: @veronicacaledon/vct-finish-layer-count-2026
│   ├── rust/               ← crates.io: vct-finish-layer-count-2026
│   ├── ruby/               ← RubyGems: vct_finish_layer_count_2026
│   ├── elixir/             ← Hex.pm: vct_finish_layer_count
│   ├── php/                ← Packagist: veronicacaledon/vct-finish-layer-count-2026
│   └── java/               ← Maven Central
├── docs/                   ← Sphinx documentation source
├── kaggle/                 ← Kaggle notebook
├── notebooks/              ← Jupyter analysis notebooks
├── pdfs/                   ← symlinks / metadata for PDF guides
└── README.md

Related Resources


License

MIT. See LICENSE.

Published by Veronica Caledon in support of floor maintenance research at Binx Professional Cleaning, North Bay and Sudbury, Ontario.