diff --git a/src/p_map.c b/src/p_map.c
index 5c8ccbb19327542e118c19e404673fdc1981de82..f738cb97dc3a51e6ce703b488339a7b5e444f14f 100644
--- a/src/p_map.c
+++ b/src/p_map.c
@@ -264,11 +264,13 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object)
 			{
 				INT32 pflags = object->player->pflags & (PF_JUMPED|PF_NOJUMPDAMAGE|PF_SPINNING|PF_THOKKED|PF_BOUNCING); // Not identical to below...
 				UINT8 secondjump = object->player->secondjump;
+				UINT16 tailsfly = object->player->powers[pw_tailsfly];
 				if (object->player->pflags & PF_GLIDING)
 					P_SetPlayerMobjState(object, S_PLAY_FALL);
 				P_ResetPlayer(object->player);
 				object->player->pflags |= pflags;
 				object->player->secondjump = secondjump;
+				object->player->powers[pw_tailsfly] = tailsfly;
 			}
 		}