One event can receive two different times
An embedded system combines vibration and temperature before AI inference. Sensors observe one process, but timestamps disagree and initial correction loses effectiveness after an hour. The problem may precede the model: clocks can start differently and run at different rates. We study correction from reference pairs and ambiguity when measurement time is confused with packet receipt.
Abstract. Construct affine clock C(t)=(1+40 × 10⁻⁶)t+.012 s. At 3600 s it leads by 156 ms; subtracting initial offset leaves 144 ms. Two true anchors recover this synthetic model exactly, while receipt anchors with 4/20 ms delays leave 100 ms error after an hour. A separate equal-rate four-timestamp example, forward 2 ms and return 18 ms, estimates offset 4 ms versus true 12 ms. Equations and simulations, not MCU measurements or NTP implementation.
Three concepts not to confuse
A timestamp is a clock’s number, not physical time itself. Let t be ideal reference seconds and C(t) local time in the same unit. Offset is their difference at an instant; frequency drift describes rate difference. Transport delay lies between event and information receipt. A late packet may carry a correct timestamp, or arrive quickly with an unsynchronized timestamp.
Affine C(t)=at+b assumes constant rate ratio over the interval. a is dimensionless, b seconds. a=1 means equal rate, not equal time; b=0 means agreement at origin, not equal rate. Forty parts per million, ppm, means 40 microseconds gained per second here. These are chosen calculation parameters, not quartz or board specifications.
The formula asks divergence after waiting. Fixed b adds to growing(a−1)t:40 × 10⁻⁶× 3600 s=.144 s; plus 12 ms gives 156 ms. Subtracting 12 ms removes intercept, not slope. Relative to an assumed 10 ms sampling period,144 ms is 14.4 periods, a scale comparison, not measured lost samples or verified hardware frequency.
Two anchors identify slope and origin
Assume true instants t₀, t₁ and corresponding local readings c₀, c₁ at the same events. Differencing removes b; division by reference difference gives a, then one pair gives b. Invert the affine relation to map readings back. This need not physically reset a device counter: preserve original timestamps and apply a documented downstream conversion.
At t₀=0, t₁=600 s, c₀=.012, c₁=600.036 s. Slope 600.024/600=1.00004, intercept.012 s. Local 3600.156 s maps back to 3600 s within floating-point tolerance. Exact affine data and exact anchors determine two parameters by construction. Two arbitrary packets do not thereby identify real board frequency, nor prove constant rate under temperature or power changes.
Receipt does not reveal measurement time
Keep device timestamps but record gateway receipt r₀=.004 s, r₁=600.020 s: chosen 4/20 ms delays. Treating r as t gives a_hat=600.024/600.016≈1.000013333, b_hat≈.007999947 s. Both receipt anchors fit exactly, yet event reference time is not recovered. Apparent frequency includes changing packet delay.
Converting the reading at true 3600 s gives 3600.1 s, error 100 ms. This is map-estimation error from earlier anchors, not an assigned future packet delay. True clock rate remains 40 ppm. Unknown delays allow a time difference to be attributed to rate or transport. More timestamp decimals do not provide missing information.
Table method 1 is raw,2 offset subtraction,3 true anchors and 4 receipt anchors. Zero is an exact-model property, not a device precision claim.
| Method at 3600 s | Error(ms) |
|---|---|
| 1 | 156 |
| 2 | 144 |
| 3 | 0 |
| 4 | 100 |

Four timestamps: what the return trip cancels
NTPv 4 RFC 5905, June 2010, uses four timestamps for offset and round-trip delay; definitions and section 8 were read. No protocol, filters or clock discipline are implemented. We isolate the equation in a separate equal-rate exchange, not reusing 40 ppm. Reference A sends atT₁, B receives atT₂, replies atT₃, A receives atT₄; T₂, T₃ use B’s clock.
Substitute ideal times and delays: B’s processing time cancels, transport asymmetry does not. Equal one-way delays recover b; longer return shifts estimate downward. Round-trip delay reveals the sum, not each direction uniquely. Measuring total network time does not prove half belongs to each leg.
Choose b=12 ms, forward 2 ms, processing 1 ms, return 18 ms. T₁=0, T₂=14 ms, T₃=15 ms, T₄=21 ms. Offset[(14−0)+(15−21)]/2=4 ms; network delay(21−0)−(15−14)=20 ms. Offset error−8 ms is half signed delay difference. Code executes and asserts this calculation. It is not general NTP performance: the complete protocol addresses problems absent from this isolated exchange.
What this means for on-device AI
A model combining windows may receive different physical instants despite numerically aligned timestamps. Receipt-calibrated conversion can turn transmission queuing changes into apparent process changes. No classifier accuracy loss was measured because none was trained. The verified result is narrower: timing chains can create sensor disagreement before inference.
An MCU implementation must specify timestamp counter, capture point, wrap/reset handling, common reference and measurable delay bounds. Late interrupt handling differs from late measurement if hardware captured the event; a software read after interrupt can include latency. These require platform verification, not board resolution, jitter or performance claims here.
Python 3.14.0 code uses no randomness and saves 61 times 0…3600 s. Two-point fit is constant cost; converting N timestamps is O(N). Grid visualizes equations, not 61 hardware captures. Displayed snippet recalculates exact fit and one-hour conversion. Figures/results/instructions reproduce reasoning, not evidence of an EL-AI embedded installation.
Timestamps disagree because clocks and transport have different effects. Offset alone cannot fix rate; anchors help only when their meaning is known; four timestamps do not automatically remove asymmetry. Before blaming AI for signal disagreement, explain how each local reading maps to physical event time and under what limits.
from experiment import device,fit
a,b=fit([0.,600.],[device(0),device(600)])
print(device(3600)-3600,(device(3600)-b)/a)
Code, data, and instructions · JSON. Educational calculations executed with Python 3.14.0; figures with Matplotlib 3.11.2. AI-assisted analysis, without claiming peer review or human review. Original illustrative ImageGen cover: it does not document EL-AI people, premises, or installations. Sources accessed 17 October 2026.

