Clock for the 'proper' decimal time system

Similar projects worth following
Hardcore traditionalists - please stop reading now to avoid giving yourself a nervous breakdown :-)

Decimal time systems have been tried many times in the past, and eventually always have failed due to a number of different reasons. I think the main reason however (excluding the social inertia, of course!) is simply because the main culprit always slips away from attention. And that is the good old second. You can't make a decent decimal time system built around 'imperial' second, and that is exactly what people have been trying to do for centuries.

My approach is more fundamental - changing the length of the building brick of this system, changing the length of the second. After this point everything easily comes to place. I am currently building a C10 clock (the third of its kind, the first two were way back in 2011 or thereabouts).

In order to avoid any confusion with the current seconds, minutes, hours, etc., I am thinking of new names for these components in the C10 system. Then everything existing can remain the same and C10 can peacefully coexist along the current time measurement system without the need to change the entire physics which is currently built around the length of the second (that would be nice, actually).

Here is the C10 system.

Basic components (same as we know them):

year = one full turn of the Earth around the Sun.
day = one full cycle day/night or one full turn of the Earth around its own axis.

1 year = 365.25 days (we can't change this anyway)
1 day = 100 intervals (the equivalent of 'hours')
1 interval = 100 centivals (equivalent of 'minutes')
1 centival = 100 ticks (equivalent of 'seconds')
1 tick = 0.0864 current seconds.

C10 divides the day into 1,000,000 ticks in a way easy to comprehend and calculate.

The ‘tick’ is a very short 86.4 millisecond time, good for ‘high-resolution’ measurements and scientific use.

The ‘centival’ is equivalent of 8.64 seconds, which is time good for many ‘short time’ tasks in the human life.

The new ‘interval’ is about 14 and half minutes, which is length of time convenient for everyday tasks.

Going further – what about beyond a single day?

1 year = 36.5 decades (or 'weeks'). Months are obsolete and not needed any more.

If the year is an odd number it will be a 'leap' year and have 37 decades. 'Normal' years will have 36 decades. This means every second year in row will be a leap year. In addition to that an even year, which normally has 36 decades, but if it is also a number multiple of 40 will become a leap year and has 37 decades to adjust for the remainders of all past years. So, every second year will be a leap year and we will have a 'super leap' year once in every 40 years.

Or this summarised:

1 year = 365.25 days; 37 decades if the year number is odd or multiple by 40, and 36 decades otherwise (36525 intervals, 3652500 centivals, 365250000 ticks)

A decade has 10 named days.

The date can be expressed as a decade number, followed by the day by its name or number: 34th Tuesday (assuming there will be a day named 'Tuesday' as one of the ten in decade). In this example obviously the reference is to the 342ndday of the year (34 full decades, second day in the 35th decade). Also, it is very clear that between 34th Tuesday and 35th Tuesday there are exactly ten days or one decade.

C10 summary

Base time measure: tick

1 tick = 0.0864 standard SI seconds

1 centival = 100 ticks

1 interval = 100 centivals (10000 ticks)

1 day = 100 intervals (10000 centivals, 1000000 ticks).

1 decade = 10 days (1000 intervals, 100000 centivals, 10000000 ticks). The ten days also have individual names. I have not been able to come up with any names for the days within a decade. Any ideas?

@danjovic suggests an alternative and more unambiguous word for decade - 'tenary'

@K.C. Lee suggests using the standard metric prefix 'deca' thus replacing 'decade' with 'decaday'

1 year = 365.25 days; 37 decades if the year number is odd or multiple by 40; 36 decades otherwise (36525 intervals, 3652500 centivals, 365250000 ticks)

Display format in the C10 clock:

nn:cc (interval and centival - 0:00 to 99:99)

………:tt (tick - 00 to 99)

aa dd (decade and day - 1.1 to 37.10)

yyyy (year)


The bill of materials is really small...

ms-excel - 58.50 kB - 04/19/2016 at 08:47



The schematic of my new C10 clock

Adobe Portable Document Format - 77.42 kB - 04/18/2016 at 20:00


  • 1 × Keystone 2998 Battery holder
  • 1 × HDSP-B04E Displays and Inverters / LED Displays
  • 1 × 651005136521 Connectors and Accessories / Telecom and Datacom (Modular) Connectors
  • 1 × DMP3085LSD Discrete Semiconductors / Transistors, MOSFETs, FETs, IGBTs
  • 1 × SKHHLPA010 Switches and Relays / Switches

View all 16 components

  • Another C10 demo

    Kn/vD06/16/2017 at 20:02 0 comments

    A real wristwatch! :-)

  • PCB

    Kn/vD05/03/2016 at 14:08 2 comments

    Finally got the PCB. One step closer to completion...

  • Where is the zero?

    Kn/vD04/23/2016 at 07:45 4 comments

    In my initial concept I am basing the C10 moment 00:00:00 to match exactly the standard time 00:00:00, however I am also considering another variant.

    What in particular defines the moment zero? In the standard time it is the unclear definition of 'midnight'. I have not been able to find any better explanation that this. But what defines when is midnight?

    There is also another problem in this approach. The measures which small numbers, which are closer to the mind, remain largely unused because people are normally asleep during that time. So from the current clock's point of view we first rest, and then do something, instead of the opposite.

    I am thinking about the option to base the C10 moment zero on some more specific term, which can define the actual start of the day and leave the finishing intervals for sleep. This translated into current time would mean that the moment 00:00:00 in a C10 clock would be somewhere around 03:00:00 in the standard time.

    In my small conversion program this could be easily done by a very small modification (tested in CodeBlocks):

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    // this little program calculates and prints the intersection points between standard and C10 times
    void main(void) {
      unsigned long h,m,s;
      float t;
      for(h=0; h<24; h++)
        for(m=0; m<60; m++)
          for (s=0; s<60; s++) {
            // the day in C10 starts at 3AM standard time
            if(t<0) t=10000+t;
            if(t>=10000) t-=10000;
            if(t==ceil(t)) printf("%02lu:%02lu:%02lu.....%02.2f\r\n",h,m,s,(t/100));

  • Time for some coding...

    Kn/vD04/21/2016 at 19:56 8 comments

    Time to start putting things together. Counting C10 time is a really simple thing.

    Here is the code that does the whole job of counting time and date:

    // C10 date/time structure
    struct {
      unsigned char  tick;     // 0..99
      unsigned char centival;  // 0..99
      unsigned char interval;  // 0..99
      unsigned char day;       // 0..9
      unsigned char decade;    // 0..36
      unsigned int year;
    } dt;
    // must be executed at every exact 0.0864s (one tick)
    void clockC10(void) {
      if (++dt.tick>99) {
        if (++dt.centival>99) {
          if (++dt.interval>99) {
            if (>9) {
              unsigned char yl=36;    // year length
              // the year will have 37 decades if odd
              // number or multiple by 40
              if ((dt.year&1) || (dt.year%40)==0) yl++;
              if (++dt.decade>=yl) {

  • Accurate setting of a C10 clock from within our current reality

    Kn/vD04/21/2016 at 09:38 5 comments

    There are exactly 400 intersection moments (occurring at every 216th standard second) between the standard and C10 times, assuming that the tick is always zero.

    Setting a C10 clock in a standard time environment is only possible at any of those 400 moments.

    // this little program calculates and prints the
    // intersection points between standard and C10 times
    void main(void) {
      unsigned long h,m,s;
      float t;
      for (h=0; h<24; h++)
        for (m=0; m<60; m++)
          for (s=0; s<60; s++) {
            if (t<0) t=10000+t;
            if (t==ceil(t)) printf("  %02d:%02d:%02d      %02.2f\r\n",h,m,s,t/100);

    Proposed model for C10 world time zones

    The world is divided in 10 equally wide zones: 0 to 9, each containing 10 intervals.

    The border between zone 9 and zone 0 is where the date is changed.

    Zones are only positive numbers.

  • Still in the archive

    Kn/vD04/19/2016 at 09:44 0 comments

    This is the first C10 clock which I made back in 2011. It wasn't very accurate though, because it was built around a standard clock and the counting and timing corrections were in software.

    C10 tick is 0.0864s, which translated into frequency is the odd 11.574(074) Hz. There is no such crystal on the market, and I didn't want to order a custom one, but fortunately there are many ways to achieve this exact frequency by using standard frequency crystals:





    ... and so on.

    In my current schematic I use 100kHz clock divided by 8640. The reason for this is purely to increase the accuracy after division.

    The best accuracy in general can be achieved by using a 19.2MHz crystal (with divider 1658880) as these come in the lowest frequency deviation and lowest temperature drift options on the market. But such high input frequency will significantly increase the power consumption in standby as well, so I decided to make a compromise on that for this demo.

  • In the past...

    Kn/vD04/18/2016 at 20:06 0 comments

    A few years ago I built a simple electronic prototype for C10 clock at home for testing. It is amazing how on the third day one can really start thinking " is 33 o'clock", obviously we are 1/3 into the day. "55 o'clock" is time when people usually have their lunch as just after half into the day, "75 o'clock" - people normally go home after work, "90 o'clock or later" - time for bed. I tested the system with my two kids (5 and 10 years old at the time) and they needed just a few words to understand it! Now, how many books and pictures have been made to explain to little kids how current time works?

    Another good thing about C10 is the actual length of its base measures: one interval takes about 14.5 current minutes – long enough time for everyday use, but far not as long as the hours in a 10-hour day. One centival refers to about 8.5 current seconds – very convenient for referring to short events in the everyday human life. One tick – a very short time, good for scientific use.

    Of course it is way too optimistic to assume that everyone will happily just accept a new time system in matter of days. In the most favourable estimation it may take up to a century for such a change to happen. Various ethnic, religious and even business groups may strongly oppose to any change at all, so a change must start from the children. If the very young people adopt and understand a new way of measuring the time, it will eventually be passed on to the next generation, to the one after it and so on until one day fully adopted.

View all 7 project logs

Enjoy this project?



Andhavarapu Balu wrote 03/04/2021 at 06:01 point

Here's how I'd like the system instead:

1 day = 10 hours

1 hour = 100 minutes

1 minute = 100 seconds

Therefore, 1 second in this system would be around 0.85 SI second. This might actually make it easier for counting time

I'veseen kids around my playing hide and seek counting numbers. And their speed of counting seconds is quite faster than the SI second. Maybe even 0.85 seconds won't match up to their speed accurately, but a shorter second sure looks better

  Are you sure? yes | no

Thomas wrote 04/27/2020 at 10:00 point

The idea is not new but worth reconsidering.

Let's see what it would do to day-long workshops or meetings:
New Clock: AB:CD
A: 144m, ~2:30h, workshop session slots
B:14.4m, ~15m, a wrap-up, a break
C:1.44m, 86.4s, ~1.5m, a pitch, a sumary
D:8.64s, ~10s, a brief statement

I guess that the 3rd hour (7:12am) would mark the start, and there would be two sessions till lunch (one session for eating, socializing and plotting) then continue until the 8th hour when absinthe starts to flow freely. Ah, yes, and don't forget to divide the year in 10 months and the week in 10 days :-)

  Are you sure? yes | no

Martin wrote 11/15/2017 at 12:33 point

I would have divided the day into 10 intervals, not 100. Then the day has 100.000 ticks and one tick is close to  a conventional second (only around 1/8 error.

  Are you sure? yes | no

danjovic wrote 04/19/2016 at 18:31 point

Nice. So 1 hour takes about 4 intervals, good enough! I would prefer to count a 'centi-hour' of 5 intervals, though. 

There are some algorhithms for timebase correction that you may finde useful to your project. Please refer to

One correction to the text: The exact time for a tick is 86.4 miliseconds instead of 8.64.

  Are you sure? yes | no

Kn/vD wrote 04/19/2016 at 19:27 point

Thanks for the correction. Of course 86.4ms is the correct value. Thanks also for the link.

As to the intervals within an hour... This is the equivalent of why there are 2.54cm in an inch, it would have been much easier it they were 3...

The length of an interval is not based in any form of the hour, so that's why the actual figure is 4.1(66) intervals in an hour.

  Are you sure? yes | no

danjovic wrote 04/19/2016 at 21:26 point

Roman black C interrupt 0 for generating ticks. It was simulated and alternates ticks of 86275 and 86525 microseconds thus resulting in an average tick of 86400 ticks. Good enough (unless you mind having +/-125us of jitter, lol) 

// uses 1 variable; unsigned int32 bres
// gets here every TMR0 int (every 256 ticks)
void dc10Timebase() {
    bres += 256; // add 256 ticks to bresenham total

    if(bres >= 86400)  { // if reached 1 tick (86400 counts)!
        bres -= 86400; // subtract 1 tick, retain error

        do_1_tick_event(); // update clock, etc



Note: timer0 runs at prescaler 1 which means 1us for a 4MHz clock

  Are you sure? yes | no

Kn/vD wrote 04/19/2016 at 13:15 point

I know about that one. Interesting concept but they didn't take it as far as it was necessary. Their beats are too long, and everything longer than one day remained unchanged. Decimal time within the day, imperial outside, and even within the day - low granularity. I am trying to correct all these mistakes at once.

Time zones however are needed. My next log (already written as draft) is covering exactly that matter.

  Are you sure? yes | no

matseng wrote 04/19/2016 at 12:38 point

So this is more or less the same as the (unfortunately) failed Swatch @Beats time concept they tried to launch about 20 years ago. then? But with higher resolution.

The thing I liked the most with the concept was that it didn't use any timezones. The time was, for instance, @314 simultaneously all over the world.

I actually had one of the beats watches...

  Are you sure? yes | no

Martin wrote 11/15/2017 at 12:39 point

Omitting time zones completely is only useful for somebody who is traveling most of the time. Otherwise a correlation between time and position of the sun (and so daylight) is very useful. Although the concept of DST weakens this a little, am also fine with DST.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates