System mktime sets tm_isdst to 0 or 1 if you pass in -1. We forget to do that. A point test is needed here.