Nope. The code I see there won’t behave as you have described. You can easily test this.
Put some print statement in the function to see what it does and how your count progresses
local function updateLives( event ) print("entering updateLives(); numLives == ", numLives ) -- Remove Pip/Dot if( numLives \> 0 ) then display.remove( lives[numLives] ) numLives = numLives - 1 print("Removed a life; numLives == ", numLives ) end if( numLives \<= 0 ) then print("Bye! numLives == ", numLives ) print("------------------------\n") local options = { effect = "crossFade", time = 100 } composer.gotoScene( "levels.menu", options ) return end print("Continuing... numLives == ", numLives ) print("------------------------\n") end