In OP's first example, .secs DOES NOT return that value in the last execution.
Yes, that is because returning 0 in this context could mean that it is about to trigger again, ie. it may be a /timer N 0 call. What you are requesting is for .secs to return 0 in this context even though it could mean either "about to trigger again immediately" or "is never going to trigger again". That makes no sense. The only change that could make sense is for .secs to return -1 if it is not going to trigger again. However, this could have backwards-compatibility side-effects, so it cannot be changed.