diff --git a/src/p_inter.c b/src/p_inter.c
index 71dcd70a1d4b5aae5f9f30dbe81efb02c65602af..5e1f7345ccc6812bec28ed2fd1f293f378e28c79 100644
--- a/src/p_inter.c
+++ b/src/p_inter.c
@@ -2527,7 +2527,8 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
 		else if (!target->player->bot && !target->player->spectator && (target->player->lives != INFLIVES)
 		 && G_GametypeUsesLives())
 		{
-			target->player->lives -= 1; // Lose a life Tails 03-11-2000
+			if (!(target->player->pflags & PF_FINISHED))
+				target->player->lives -= 1; // Lose a life Tails 03-11-2000
 
 			if (target->player->lives <= 0) // Tails 03-14-2000
 			{
diff --git a/src/st_stuff.c b/src/st_stuff.c
index 4676506fcb26dcfbe78adddcb2b3ec1523aa6c9b..9c9c80164a90f08fdf1407ab8cdae8f2c34c960e 100644
--- a/src/st_stuff.c
+++ b/src/st_stuff.c
@@ -944,7 +944,7 @@ static void ST_drawLivesArea(void)
 					'\x16' | 0x80 | hudinfo[HUD_LIVES].f|V_PERPLAYER|V_HUDTRANS, false);
 			else
 			{
-				if (stplyr->playerstate == PST_DEAD && !(stplyr->spectator) && (livescount || stplyr->deadtimer < (TICRATE<<1)))
+				if (stplyr->playerstate == PST_DEAD && !(stplyr->spectator) && (livescount || stplyr->deadtimer < (TICRATE<<1)) && !(stplyr->pflags & PF_FINISHED))
 					livescount++;
 				if (livescount > 99)
 					livescount = 99;