diff --git a/indra/newview/llviewertextureanim.cpp b/indra/newview/llviewertextureanim.cpp
index b94f6f4569fbe7f05ea233eb893bcf90793be057..9603811066580cd596ba1e7438494c08d3ea43a0 100644
--- a/indra/newview/llviewertextureanim.cpp
+++ b/indra/newview/llviewertextureanim.cpp
@@ -138,12 +138,16 @@ S32 LLViewerTextureAnim::animateTextures(F32 &off_s, F32 &off_t,
 	{
 		frame_counter  = fmod(frame_counter, full_length);
 	}
-
-	frame_counter = llmin(full_length - 1.f, frame_counter);
+	else
+	{
+		frame_counter = llmin(full_length - 1.f, frame_counter);
+	}
 
 	if (!(mMode & SMOOTH))
 	{
 		frame_counter = (F32)llfloor(frame_counter + 0.01f);
+		// account for 0.01, we shouldn't step over full length
+		frame_counter = llmin(full_length - 1.f, frame_counter);
 	}
 
 	if (mMode & PING_PONG)