according to the ANSI C spec, (b) gets the boundary conditions right,
and (c) is about a third as long and three times more intelligible.
 #endif 
        if (tmfc->ssss) 
        {
-               int x;
-               
-               if (tmfc->ssss > 3600) 
-                       tm->tm_sec = x - ((tm->tm_min = (x = tmfc->ssss - 
-                               ((tm->tm_hour= tmfc->ssss / 3600) * 3600)) / 60) * 60);
-               else if (tmfc->ssss > 60) 
-                       tm->tm_sec =  tmfc->ssss - ((tm->tm_min =  tmfc->ssss / 60) * 60);
-               else 
-                       tm->tm_sec = tmfc->ssss;
-       } 
+               int             x = tmfc->ssss;
+
+               tm->tm_hour = x / 3600;
+               x %= 3600;
+               tm->tm_min = x / 60;
+               x %= 60;
+               tm->tm_sec = x;
+       }
 
        if (tmfc->cc)
                tm->tm_year = (tmfc->cc-1) * 100;