More wild speculation . . .
. . . so if INEOS only used a 10-bit two's complement for signed binaries, they would truncate values with modulus 1024 (keep subtracting 1024 until you get a number smaller than 1024). In other words, they don't expect someone to go more than 1024 days (2 years 9-1/2 months) without getting a reset. Using that scheme, I generated a table showing the error message days in the first column and your expected service date in the far right column. Does this jive with reality for anyone?
Code:
Error Msg / Modulo 1024 / 10-bit Binary / Days Since Service Due / Service Due Date
1840 816 1100110000 -208 Jul 28, 2026
1841 817 1100110001 -207 Jul 27, 2026
1852 828 1100111100 -196 Jul 16, 2026
1852 828 1100111100 -196 Jul 16, 2026
1868 844 1101001100 -180 Jun 30, 2026
1869 845 1101001101 -179 Jun 29, 2026
1890 866 1101100010 -158 Jun 08, 2026
1892 868 1101100100 -156 Jun 06, 2026
1894 870 1101100110 -154 Jun 04, 2026
1899 875 1101101011 -149 May 30, 2026
1906 882 1101110010 -142 May 23, 2026
1915 891 1101111011 -133 May 14, 2026
1927 903 1110000111 -121 May 02, 2026
1931 907 1110001011 -117 Apr 28, 2026
1932 908 1110001100 -116 Apr 27, 2026
1933 909 1110001101 -115 Apr 26, 2026
1937 913 1110010001 -111 Apr 22, 2026
1940 916 1110010100 -108 Apr 19, 2026
1945 921 1110011001 -103 Apr 14, 2026
1950 926 1110011110 -98 Apr 09, 2026
1953 929 1110100001 -95 Apr 06, 2026
1967 943 1110101111 -81 Mar 23, 2026
1968 944 1110110000 -80 Mar 22, 2026
1968 944 1110110000 -80 Mar 22, 2026
1975 951 1110110111 -73 Mar 15, 2026
1989 965 1111000101 -59 Mar 01, 2026
1903 879 1101101111 -145 May 26, 2026
1994 970 1111001010 -54 Feb 24, 2026
1995 971 1111001011 -53 Feb 23, 2026
2007 983 1111010111 -41 Feb 11, 2026
2007 983 1111010111 -41 Feb 11, 2026
2007 983 1111010111 -41 Feb 11, 2026
2009 985 1111011001 -39 Feb 09, 2026
2022 998 1111100110 -26 Jan 27, 2026
2024 1000 1111101000 -24 Jan 25, 2026
2025 1001 1111101001 -23 Jan 24, 2026
2044 1020 1111111100 -4 Jan 05, 2026
2048 0 0000000000 0 Jan 01, 2026
2057 9 0000001001 9 Dec 23, 2025
2057 9 0000001001 9 Dec 23, 2025
2059 11 0000001011 11 Dec 21, 2025
2074 26 0000011010 26 Dec 06, 2025
2095 47 0000101111 47 Nov 15, 2025
2097 49 0000110001 49 Nov 13, 2025
2097 49 0000110001 49 Nov 13, 2025
2106 58 0000111010 58 Nov 04, 2025
2107 59 0000111011 59 Nov 03, 2025
2137 89 0001011001 89 Oct 04, 2025
2150 102 0001100110 102 Sep 21, 2025
2156 108 0001101100 108 Sep 15, 2025
2190 142 0010001110 142 Aug 12, 2025
2253 205 0011001101 205 Jun 10, 2025
2367 319 0100111111 319 Feb 16, 2025
2458 410 0110011010 410 Nov 17, 2024
Notice that users who got an error message of >=2048 would have already received a legitimate service due message on or before Jan 1, 2026.
This doesn't work for my case. My service overdue was 2051d on 1 Jan 2026 and puts me between 2048d and 2057d, or 1 JAN 2026 and 23 DEC 2025 for a service due date.
Note that my error message is >=2048, but my last service reset was 21 May 2025, so I would not have already received a legitimate service due message on or before Jan 1, 2026, but would have on 21 May 2026.
Love what you did here, I tried with 11-bits as I figured highest bit might be used for the sign, but that didn't work out and 10-bit doesn't appear to either.
I ran all of these XXXXd through the Tcl script (assumed all the XXXXd were what they were on 1 JAN 2026), and here's what I get for each -- first column is now the Last Service Date, i.e. when your Grenadier's service counter was reset -- add 5 years to get the actual Last Service Date, the next service date, add 6 years. The MM and DD are same, only the years shift (so only 5 or 6 years of days were added? I think 5 years worth of days). Note because it matters what date you read your XXXXd value, it may be off a few days MM/DD wise, as I had to make the assumption that all these XXXXd were read on 1 JAN 2026 as it's not specified.
If you recognize your XXXXd or can interpolate, was your last service reset date close to the date in the first column + 5 years +/- a few days (i.e. MM / DD are off a bit)? I left all the columns and values from Glen's table after the '--' for reference.
Last Service Reset -- Error Msg / Modulo 1024 / 10-bit Binary / Days Since Service Due / Service Due Date
2020-12-17 -- 1841 817 1100110001 -207 Jul 27, 2026
2020-12-06 -- 1852 828 1100111100 -196 Jul 16, 2026
2020-12-06 -- 1852 828 1100111100 -196 Jul 16, 2026
2020-11-20 -- 1868 844 1101001100 -180 Jun 30, 2026
2020-11-19 -- 1869 845 1101001101 -179 Jun 29, 2026
2020-10-29 -- 1890 866 1101100010 -158 Jun 08, 2026
2020-10-27 -- 1892 868 1101100100 -156 Jun 06, 2026
2020-10-25 -- 1894 870 1101100110 -154 Jun 04, 2026
2020-10-20 -- 1899 875 1101101011 -149 May 30, 2026
2020-10-16 -- 1903 879 1101101111 -145 May 26, 2026
2020-10-13 -- 1906 882 1101110010 -142 May 23, 2026
2020-10-04 -- 1915 891 1101111011 -133 May 14, 2026
2020-09-22 -- 1927 903 1110000111 -121 May 02, 2026
2020-09-18 -- 1931 907 1110001011 -117 Apr 28, 2026
2020-09-17 -- 1932 908 1110001100 -116 Apr 27, 2026
2020-09-16 -- 1933 909 1110001101 -115 Apr 26, 2026
2020-09-12 -- 1937 913 1110010001 -111 Apr 22, 2026
2020-09-09 -- 1940 916 1110010100 -108 Apr 19, 2026
2020-09-04 -- 1945 921 1110011001 -103 Apr 14, 2026
2020-08-30 -- 1950 926 1110011110 -98 Apr 09, 2026
2020-08-27 -- 1953 929 1110100001 -95 Apr 06, 2026
2020-08-13 -- 1967 943 1110101111 -81 Mar 23, 2026
2020-08-12 -- 1968 944 1110110000 -80 Mar 22, 2026
2020-08-12 -- 1968 944 1110110000 -80 Mar 22, 2026
2020-08-05 -- 1975 951 1110110111 -73 Mar 15, 2026
2020-07-22 -- 1989 965 1111000101 -59 Mar 01, 2026
2020-07-17 -- 1994 970 1111001010 -54 Feb 24, 2026
2020-07-16 -- 1995 971 1111001011 -53 Feb 23, 2026
2020-07-04 -- 2007 983 1111010111 -41 Feb 11, 2026
2020-07-04 -- 2007 983 1111010111 -41 Feb 11, 2026
2020-07-04 -- 2007 983 1111010111 -41 Feb 11, 2026
2020-07-02 -- 2009 985 1111011001 -39 Feb 09, 2026
2020-06-19 -- 2022 998 1111100110 -26 Jan 27, 2026
2020-06-17 -- 2024 1000 1111101000 -24 Jan 25, 2026
2020-06-16 -- 2025 1001 1111101001 -23 Jan 24, 2026
2020-05-28 -- 2044 1020 1111111100 -4 Jan 05, 2026
2020-05-24 -- 2048 0 0000000000 0 Jan 01, 2026
2020-05-21 -- 2051 X XXXXXXXXXX X MMM DD, YYYY
2020-05-15 -- 2057 9 0000001001 9 Dec 23, 2025
2020-05-15 -- 2057 9 0000001001 9 Dec 23, 2025
2020-05-13 -- 2059 11 0000001011 11 Dec 21, 2025
2020-04-28 -- 2074 26 0000011010 26 Dec 06, 2025
2020-04-07 -- 2095 47 0000101111 47 Nov 15, 2025
2020-04-05 -- 2097 49 0000110001 49 Nov 13, 2025
2020-04-05 -- 2097 49 0000110001 49 Nov 13, 2025
2020-03-27 -- 2106 58 0000111010 58 Nov 04, 2025
2020-03-26 -- 2107 59 0000111011 59 Nov 03, 2025
2020-02-25 -- 2137 89 0001011001 89 Oct 04, 2025
2020-02-12 -- 2150 102 0001100110 102 Sep 21, 2025
2020-02-06 -- 2156 108 0001101100 108 Sep 15, 2025
2020-01-03 -- 2190 142 0010001110 142 Aug 12, 2025
2019-11-01 -- 2253 205 0011001101 205 Jun 10, 2025
2019-07-10 -- 2367 319 0100111111 319 Feb 16, 2025
2019-04-10 -- 2458 410 0110011010 410 Nov 17, 2024
/s.