what does the * do in this routine? (if (not *last_num*)(setq *last_num* 1))
It is coding convention to identify these as global variables. Could have just as easily have been (setq glob_last_num last_num). Nothing special, just a way to identify type of variable when reading code. After running the above line once, you can assess to value of *last_num* by typing !*last_num*. Often used to return the previous value last set when the routine was run in the current session. MJG