def add_final_live(self, print_progress=True, print_func=None):
        """
        **A wrapper that executes the loop adding the final live points.**
        Adds the final set of live points to the pre-existing sequence of
        dead points from the current nested sampling run.

        Parameters
        ----------
        print_progress : bool, optional
            Whether or not to output a simple summary of the current run that
            updates with each iteration. Default is `True`.

        print_func : function, optional
            A function that prints out the current state of the sampler.
            If not provided, the default :meth:`results.print_fn` is used.

        """

        # Initialize quantities/
        if print_func is None:
            print_func = print_fn

        # Add remaining live points to samples.
        ncall = self.ncall
        it = self.it - 1
        for i, results in enumerate(self.add_live_points()):
            (worst, ustar, vstar, loglstar, logvol, logwt,
             logz, logzvar, h, nc, worst_it, boundidx, bounditer,
             eff, delta_logz) = results
            if delta_logz > 1e6:
                delta_logz = np.inf
            if logz <= -1e6:
                logz = -np.inf

            # Print progress.
            if print_progress:
                print_func(results, it, ncall, add_live_it=i+1, dlogz=0.01)