Looks as if the change below is what's needed; it is modeled on tzcode2013c.

(The 0.5 is only relevant on systems where time_t is some variety of floating point; there may not be any such systems in the wild; the 0.5 should be optimized away by quality compilers on systems where time_t is some variety of integer.)

    --ado

*** tzcode2013d/localtime.c    2013-05-28 00:26:18.000000000 -0400
--- tzcode2013e/localtime.c    2013-07-08 16:36:02.036867600 -0400
***************
*** 1514,1522 ****
      }
      {
          register int_fast32_t    seconds;
-         register time_t        half_second = 0.5;
 
!         seconds = tdays * SECSPERDAY + half_second;
          tdays = seconds / SECSPERDAY;
          rem += seconds - tdays * SECSPERDAY;
      }
--- 1514,1521 ----
      }
      {
          register int_fast32_t    seconds;
 
!         seconds = tdays * SECSPERDAY + 0.5;
          tdays = seconds / SECSPERDAY;
          rem += seconds - tdays * SECSPERDAY;
      }



On Mon, Jul 8, 2013 at 4:09 PM, Andy Heninger <aheninger@google.com> wrote:
This compilation error from the localtime.c in 2013d looks like an actual problem. I think time_t is generally an integer type of some sort.

Built using the clang compiler on Linux.

localtime.c:1517:34: error: implicit conversion from 'double' to 'time_t' (aka 'long') changes value from 0.5 to 0 [-Werror,-Wliteral-conversion]
                register time_t         half_second = 0.5;
                                        ~~~~~~~~~~~   ^~~
1 error generated.

Thanks,
  -- Andy Heninger