Thanks for the bug report. My guess is that there's an incompatibility with FreeBSD 10.1 amd64 mktime. I can't reproduce the problem on FreeBSD 9.1 x86. Please try the attached patch, just for debugging, and then run the following one-line shell command: src/emacs -Q -batch -eval '(progn (setenv "TZ" "Asia/Kolkata") (print (encode-time 44 42 6 15 2 2015 0 nil 0)))' What output do you get? Here's what I get on Fedora 21 x86-64, which seems correct: oldtz=Asia/Kolkata tz=XXX-0:00:00 oldTZ=Asia/Kolkata TZ=XXX-0:00:00 2015-02-15 06:42:44 -1 -> 2015-02-15 06:42:44 0 = 1423982564 Assuming you get different output, can you debug Emacs with GDB to send us more details about what's going wrong? If not, can you give me access to a FreeBSD 10.1 amd64 machine like yours?