Found a small bug after inspecting some SAC headers.
In _append_sac_headers_trace (line 188), you define
end_time = begin_time + (tr.stats.npts * tr.stats.delta)
This little off-by-one error results in an end time that is too long by 1-sample. It should be,
end_time = begin_time + (tr.stats.npts - 1) * tr.stats.delta