Bug/callstack gh 860

This addresses bug #860.
First, we check to make sure that we got a duration from the `techGet` call, which may return nothing if the tech isn't ready yet, and then we call to update the duration if a duration exists. Otherwise, we don't.
If we don't have a cached value for duration, we should default to returning zero.