diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 118ed10eb2acad830a3c96e4aa2d0115b7125034..765220cdd4f000d21c61f5aed1882764b02f5e3f 100755
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -776,6 +776,7 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
 	mRuthTimer.reset();
 	mRuthDebugTimer.reset();
 	mDebugExistenceTimer.reset();
+	mLastAppearanceMessageTimer.reset();
 	mPelvisOffset = LLVector3(0.0f,0.0f,0.0f);
 	mLastPelvisToFoot = 0.0f;
 	mPelvisFixup = 0.0f;
@@ -3223,6 +3224,13 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
 		{
 			debug_line += llformat(" hov_z: %f", mHoverOffset[2]);
 		}
+		F32 elapsed = mLastAppearanceMessageTimer.getElapsedTimeF32();
+		static char *elapsed_chars = "Xx*...";
+		U32 bucket = U32(elapsed*2);
+		if (bucket < strlen(elapsed_chars))
+		{
+			debug_line += llformat(" %c", elapsed_chars[bucket]);
+		}
 		addDebugText(debug_line);
 	}
 	if (gSavedSettings.getBOOL("DebugAvatarCompositeBaked"))
@@ -7147,6 +7155,8 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		return;
 	}
 
+	mLastAppearanceMessageTimer.reset();
+
 	ESex old_sex = getSex();
 
 	LLAppearanceMessageContents contents;
@@ -7331,6 +7341,11 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
 		}
 	}
 
+	if (isSelf())
+	{
+		LL_INFOS("Avatar") << "hover was set: " << contents.mHoverOffsetWasSet << " value_z " << contents.mHoverOffset[2] << LL_ENDL;
+	}
+	
 	if (contents.mHoverOffsetWasSet && !isSelf())
 	{
 		// Got an update for some other avatar.
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 445f0ff9212588b14f0eca1e23a9b28a3e28ca07..8135c3d4d8c053693795490c205dac36c094b371 100755
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -992,6 +992,7 @@ class LLVOAvatar :
 protected:
 	LLFrameTimer	mRuthDebugTimer; // For tracking how long it takes for av to rez
 	LLFrameTimer	mDebugExistenceTimer; // Debugging for how long the avatar has been in memory.
+	LLFrameTimer	mLastAppearanceMessageTimer; // Time since last appearance message received.
 
 	//--------------------------------------------------------------------
 	// COF monitoring
diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg
index e0a80ee9cd15a5e4f65b3cc87f2644ec992fe89d..3cec4ada1c3dd9c1dcbd178fe09a753673eca05b 100755
--- a/scripts/messages/message_template.msg
+++ b/scripts/messages/message_template.msg
@@ -3595,7 +3595,7 @@ version 2.0
 		{	Flags				U32	}
 	}
 	{
-		AppearanceHover		Single
+		AppearanceHover		Variable
 		{	HoverHeight	LLVector3	}
 	}
 }
diff --git a/scripts/messages/message_template.msg.sha1 b/scripts/messages/message_template.msg.sha1
index affee31086ffb69434151b2ba5a9a2fbc20e66ca..e699efb03c588f0713f4121b73f674581468ef36 100755
--- a/scripts/messages/message_template.msg.sha1
+++ b/scripts/messages/message_template.msg.sha1
@@ -1 +1 @@
-bc6a4d7f7fd9bfddefcef336c3e30b623497447f
\ No newline at end of file
+2286adc795b1b06eb86fdda431a71a6f0874b4f1
\ No newline at end of file