The value of "time_second" is a number of seconds since 1970, if I understand correctly. It means that then condition "if (frag->fr_timeout > expire)" in pf_purge_expired_fragments() should always evaluated to "true" and hence there is no expiring happens. The problem exists since 10.2.