All times in this document are recorded in UTC+2 (CEST).
Incident summary
On March 31st, 2026, an issue was identified that could affect mark calculations when guess score correction was combined with the ROUNDDOWN or ROUNDUP functions. Due to floating point precision limitations, small differences between the displayed and internally stored values of calculated points could, in rare cases, result in slightly incorrect marks.
Specifically, while results are displayed rounded to one decimal, the underlying values used in calculations may contain additional decimal precision. When applying rounding functions such as ROUNDDOWN or ROUNDUP, these small discrepancies could lead to outcomes that were lower or higher than expected (for example, 2.9 instead of 3.0).
A fix was developed, tested, reviewed, and deployed on March 31st at 17:10. All impacted schools have been informed.
Lead-up
On March 31st, 2026, at 11:36, a support ticket was submitted with a question on how a student’s mark was calculated. The student expected their mark to be 0.1 higher than what was shown in their result. The ticket was directly picked up with urgency by the support team for investigation.
Fault
An issue was identified that could affect mark calculations where the combination of guess score corrected points and a ROUNDDOWN or ROUNDUP function could, in rare cases, lead to incorrect marks due to floating numbers.
What are floating numbers?
A floating number is a way computers store decimal numbers. Instead of storing them exactly, computers store them in a binary (base-2) format. A floating number is an approximation of a decimal number and may not represent the exact value.
Why is it an approximation?
Some decimal numbers cannot be represented exactly in binary. The computer stores a value very close to the intended number, for example:
0.1 → actually stored as 0.100000000000000005…
How this causes issues with ROUNDDOWN or ROUNDUP
Functions like ROUNDDOWN or ROUNDUP rely on the exact value of the number. Small differences caused by floating point representation can therefore produce unexpected results.
In the system, points for a result are displayed rounded to one decimal, but the internal value used in calculations is not rounded. For instance, a result may show 30.0 points while the stored value is 29.99999999. When the mark calculation formula
ROUNDDOWN(10 * Obtained points / Total points, 1)
is applied, the expected mark of 3.0 may instead be calculated as 2.9 due to the slight discrepancy.
Impact
The impact of this incident affected the guess score corrected points, and therefore the final marks if the ROUNDDOWN or ROUNDUP functions were used. An impact analysis was performed on assignments with the guess correction enabled and contained a mark calculation formula with the ROUNDDOWN or ROUNDUP function. This analysis was scoped to results created from September 1st 2024 to April 1st 2026.
The investigation in 103 affected assignments, with 960 impacted results.
Impacted schools have been informed.
Detection
The issue was reported by a user via a support ticket. The support team manually recalculated the student’s mark and, upon noticing a discrepancy, escalated the matter to the technical team. The technical team confirmed that the incorrect mark was caused by floating point precision limitations affecting the combination of guess score corrected points with ROUNDDOWN or ROUNDUP functions.
Response
On March 31st, 2026, at 14:03, the technical team started on a fix to address floating point precision issues in the mark calculation. The fix was created, tested, reviewed, and deployed to production on the same day at 17:10.
Recovery
The solution ensures that intermediate calculation values are rounded to 10 decimal places before applying functions such as ROUNDDOWN or ROUNDUP. This level of precision is significantly higher than the precision required for final grades, while remaining within safe limits of the data type.
As a result, the fix removes the impact of floating point inaccuracies without affecting grading outcomes, ensuring that calculated marks now align with the expected results.
Timeline
31st of March, 2026
- 11:36 - The support team received a ticket with a question on how a mark was calculated.
- 11:46 - The support team started to manually check how the mark is calculated.
- 14:03 - The technical team found the cause and began working on the fix.
- 17:10 - The fix was deployed to the production environment.
1st of April, 2026
- 11:36 - The technical team shared the initial impact (last 365 days).
- 15:04 - The support team shared the initial impact with the affected schools.
- 16:31 -The technical team confirmed the complete impact.
2nd of April, 2026
- 11:30 - The affected schools were informed of the complete impact.
Reflection
This issue was found after existing for quite a long period of time, due to the circumstances that are required to create the issue. There are only a handful of assignments that use the ROUNDUP and ROUNDDOWN functions, while also having guess correction enabled. On top of that, the corrected points would need to evaluate to a number with so much precision, that it would artificially be cut off because of how large it was.
This means that there was no mathematical issue regarding the calculation of grades, but a limitation on the way it was computed by the systems we depend on.
After finding the issue we took quick action. The support team escalated the issue as soon as it was confirmed to be an inconsistency. The technical team both fixed the problem and found the impact this issue had on existing data quickly.
Comments
3 comments
We have deployed a fix in the production environment to prevent this issue from occurring in future assignments. We are currently determining the impact and will update this article once we have more information.
The initial impact of the last 365 days has been shared with the affected schools. The article has been updated to reflect this.
We are determining the final impact.
The complete Service incident has now been published.
Please sign in to leave a comment.