Abstraction is a cornerstone of programming a complex software system. Without it, a complex software system is a complicated software system. In this talk, an important abstraction tool is considered: function totality. It covers termination and productivity. If a supposedly terminating program is not total, it can lead to a program crash or an infinite loop. Furthermore, a non-total program that needs to run forever can end up in a deadlock. This talk covers techniques for achieving function totality.