diff --git a/src/r_patch.c b/src/r_patch.c
index 7c9d0ea83b837a163541417dd2a95872e7a371e5..69d5ad1a2a9301ec02e167a1dd354f494243488e 100644
--- a/src/r_patch.c
+++ b/src/r_patch.c
@@ -1180,8 +1180,7 @@ void R_CacheRotSprite(spritenum_t sprnum, UINT8 frame, spriteinfo_t *sprinfo, sp
 			leftoffset = width - leftoffset;
 		}
 
-		// Don't cache angle = 0
-		for (angle = 1; angle < ROTANGLES; angle++)
+		for (angle = 0; angle < ROTANGLES; angle++)
 		{
 			INT32 newwidth, newheight;
 
diff --git a/src/r_things.c b/src/r_things.c
index aa2a73515adfd2d75d450e18b6d9d10c9b050f34..d29baa711b98fd8956df7a6f59b5602bfbc4a2ad 100644
--- a/src/r_things.c
+++ b/src/r_things.c
@@ -500,7 +500,7 @@ void R_InitSprites(void)
 {
 	size_t i;
 #ifdef ROTSPRITE
-	INT32 angle, realangle = 0;
+	INT32 angle, ra;
 	float fa;
 #endif
 
@@ -510,10 +510,12 @@ void R_InitSprites(void)
 #ifdef ROTSPRITE
 	for (angle = 0; angle < ROTANGLES; angle++)
 	{
-		fa = ANG2RAD(FixedAngle(realangle<<FRACBITS));
+		ra = (ROTANGDIFF * angle);
+		if (!ra)
+			ra = (ROTANGDIFF / 2) + 1;
+		fa = ANG2RAD(FixedAngle(ra<<FRACBITS));
 		cosang2rad[angle] = FLOAT_TO_FIXED(cos(-fa));
 		sinang2rad[angle] = FLOAT_TO_FIXED(sin(-fa));
-		realangle += ROTANGDIFF;
 	}
 #endif