Index: code/cgame/cg_draw.c
===================================================================
--- code/cgame/cg_draw.c	(revision 1345)
+++ code/cgame/cg_draw.c	(working copy)
@@ -707,6 +707,42 @@
 }
 
 /*
+================
+CG_DrawSpeedMeter
+
+================
+*/
+static float CG_DrawSpeedMeter( float y ) {
+	char        *s;
+	int         w;
+	vec_t       *vel;
+	int         speed;
+
+	/* speed meter can get in the way of the scoreboard */
+	if ( cg.scoreBoardShowing ) {
+		return y;
+	}
+
+	vel = cg.snap->ps.velocity;
+	/* ignore vertical component of velocity */
+	speed = sqrt(vel[0] * vel[0] + vel[1] * vel[1]);
+
+	s = va( "%i", speed );
+
+	w = CG_DrawStrlen( s ) * BIGCHAR_WIDTH;
+
+	if (cg_drawSpeed.integer == 1) {
+		/* top left-hand corner of screen */
+		CG_DrawBigString( 635 - w, y + 2, s, 1.0F);
+		return y + BIGCHAR_HEIGHT + 4;
+	} else {
+		/* center of screen */
+		CG_DrawBigString( 320 - w / 2, 300, s, 1.0F);
+		return y;
+	}
+}
+
+/*
 ==================
 CG_DrawSnapshot
 ==================
@@ -997,6 +1033,9 @@
 	if ( cg_drawAttacker.integer ) {
 		y = CG_DrawAttacker( y );
 	}
+	if ( cg_drawSpeed.integer ) {
+		y = CG_DrawSpeedMeter( y );
+	}
 
 }
 
Index: code/cgame/cg_local.h
===================================================================
--- code/cgame/cg_local.h	(revision 1345)
+++ code/cgame/cg_local.h	(working copy)
@@ -1136,6 +1136,7 @@
 extern	vmCvar_t		cg_thirdPerson;
 extern	vmCvar_t		cg_lagometer;
 extern	vmCvar_t		cg_drawAttacker;
+extern	vmCvar_t		cg_drawSpeed;
 extern	vmCvar_t		cg_synchronousClients;
 extern	vmCvar_t		cg_teamChatTime;
 extern	vmCvar_t		cg_teamChatHeight;
Index: code/cgame/cg_main.c
===================================================================
--- code/cgame/cg_main.c	(revision 1345)
+++ code/cgame/cg_main.c	(working copy)
@@ -144,6 +144,7 @@
 vmCvar_t	cg_thirdPersonAngle;
 vmCvar_t	cg_lagometer;
 vmCvar_t	cg_drawAttacker;
+vmCvar_t	cg_drawSpeed;
 vmCvar_t	cg_synchronousClients;
 vmCvar_t 	cg_teamChatTime;
 vmCvar_t 	cg_teamChatHeight;
@@ -221,6 +222,7 @@
 	{ &cg_drawIcons, "cg_drawIcons", "1", CVAR_ARCHIVE  },
 	{ &cg_drawAmmoWarning, "cg_drawAmmoWarning", "1", CVAR_ARCHIVE  },
 	{ &cg_drawAttacker, "cg_drawAttacker", "1", CVAR_ARCHIVE  },
+	{ &cg_drawSpeed, "cg_drawSpeed", "0", CVAR_ARCHIVE  },
 	{ &cg_drawCrosshair, "cg_drawCrosshair", "4", CVAR_ARCHIVE },
 	{ &cg_drawCrosshairNames, "cg_drawCrosshairNames", "1", CVAR_ARCHIVE },
 	{ &cg_drawRewards, "cg_drawRewards", "1", CVAR_ARCHIVE },