diff --git a/indra/llui/llstatbar.cpp b/indra/llui/llstatbar.cpp
index 46e15af66e68347478ced2bb030469b4fccd8ed5..a0a14f461036d8dcf3f9957e31d1c0a65496da06 100755
--- a/indra/llui/llstatbar.cpp
+++ b/indra/llui/llstatbar.cpp
@@ -38,9 +38,10 @@
 #include "lltracerecording.h"
 #include "llcriticaldamp.h"
 #include "lltooltip.h"
+#include "lllocalcliprect.h"
 #include <iostream>
 
-F32 calc_reasonable_tick_value(F32 min, F32 max)
+F32 calc_tick_value(F32 min, F32 max)
 {
 	F32 range = max - min;
 	const S32 DIVISORS[] = {6, 8, 10, 4, 5};
@@ -56,7 +57,7 @@ F32 calc_reasonable_tick_value(F32 min, F32 max)
 		{
 			F32 test_tick_value = min + (possible_tick_value * pow(10.0, digit_count));
 
-			if (is_approx_equal((F32)(S32)test_tick_value, (F32)test_tick_value))
+			if (is_approx_equal((F32)(S32)test_tick_value, test_tick_value))
 			{
 				if (digit_count < best_decimal_digit_count)
 				{
@@ -68,12 +69,16 @@ F32 calc_reasonable_tick_value(F32 min, F32 max)
 		}
 	}
 
-	return is_approx_equal(range, 0.f) ? 1.f : range / best_divisor;
+	return is_approx_equal(range, 0.f) ? 0.f : range / best_divisor;
 }
 
-void calc_display_range(F32& min, F32& max)
+void calc_auto_scale_range(F32& min, F32& max, F32& tick)
 {
-	const F32 RANGES[] = {1.f, 1.5f, 2.f, 3.f, 5.f, 10.f};
+	min = llmin(0.f, min, max);
+	max = llmax(0.f, min, max);
+
+	const F32 RANGES[] = {0.f, 1.f,   1.5f, 2.f, 3.f, 5.f, 10.f};
+	const F32 TICKS[]  = {0.f, 0.25f, 0.5f, 1.f, 1.f, 1.f, 2.f };
 
 	const S32 num_digits_max = is_approx_equal(fabs(max), 0.f)
 							? S32_MIN + 1
@@ -83,46 +88,55 @@ void calc_display_range(F32& min, F32& max)
 							: llceil(logf(fabs(min)) * OO_LN10);
 
 	const S32 num_digits = llmax(num_digits_max, num_digits_min);
-	const F32 starting_max = pow(10.0, num_digits - 1) * ((max < 0.f) ? -1 : 1);
-	const F32 starting_min = pow(10.0, num_digits - 1) * ((min < 0.f) ? -1 : 1);
+	const F32 power_of_10 = pow(10.0, num_digits - 1);
+	const F32 starting_max = power_of_10 * ((max < 0.f) ? -1 : 1);
+	const F32 starting_min = power_of_10 * ((min < 0.f) ? -1 : 1);
 
-	F32 new_max = starting_max;
-	F32 new_min = starting_min;
+	F32 cur_max = starting_max;
+	F32 cur_min = starting_min;
 	F32 out_max = max;
 	F32 out_min = min;
 
+	F32 cur_tick_min = 0.f;
+	F32 cur_tick_max = 0.f;
+
 	for (S32 range_idx = 0; range_idx < LL_ARRAY_SIZE(RANGES); range_idx++)
 	{
-		new_max = starting_max * RANGES[range_idx];
-		new_min = starting_min * RANGES[range_idx];
+		cur_max = starting_max * RANGES[range_idx];
+		cur_min = starting_min * RANGES[range_idx];
 
-		if (min > 0.f && new_min < min)
+		if (min > 0.f && cur_min <= min)
 		{
-			out_min = new_min;
+			out_min = cur_min;
+			cur_tick_min = TICKS[range_idx];
 		}
-		if (max < 0.f && new_max > max)
+		if (max < 0.f && cur_max >= max)
 		{
-			out_max = new_max;
+			out_max = cur_max;
+			cur_tick_max = TICKS[range_idx];
 		}
 	}
 
-	new_max = starting_max;
-	new_min = starting_min;
+	cur_max = starting_max;
+	cur_min = starting_min;
 	for (S32 range_idx = LL_ARRAY_SIZE(RANGES) - 1; range_idx >= 0; range_idx--)
 	{
-		new_max = starting_max * RANGES[range_idx];
-		new_min = starting_min * RANGES[range_idx];
+		cur_max = starting_max * RANGES[range_idx];
+		cur_min = starting_min * RANGES[range_idx];
 
-		if (min < 0.f && new_min < min)
+		if (min < 0.f && cur_min <= min)
 		{
-			out_min = new_min;
+			out_min = cur_min;
+			cur_tick_min = TICKS[range_idx];
 		}
-		if (max > 0.f && new_max > max)
+		if (max > 0.f && cur_max >= max)
 		{
-			out_max = new_max;
+			out_max = cur_max;
+			cur_tick_max = TICKS[range_idx];
 		}	
 	}
 
+	tick = power_of_10 * llmax(cur_tick_min, cur_tick_max);
 	min = out_min;
 	max = out_max;
 }
@@ -133,21 +147,26 @@ LLStatBar::LLStatBar(const Params& p)
 :	LLView(p),
 	mLabel(p.label),
 	mUnitLabel(p.unit_label),
-	mMinBar(p.bar_min),
-	mMaxBar(p.bar_max),
+	mMinBar(llmin(p.bar_min, p.bar_max)),
+	mMaxBar(llmax(p.bar_max, p.bar_min)),
 	mCurMaxBar(p.bar_max),
-	mTickValue(p.tick_spacing.isProvided() ? p.tick_spacing : calc_reasonable_tick_value(p.bar_min, p.bar_max)),
 	mDecimalDigits(p.decimal_digits),
 	mNumFrames(p.num_frames),
 	mMaxHeight(p.max_height),
 	mPerSec(p.show_per_sec),
 	mDisplayBar(p.show_bar),
 	mDisplayHistory(p.show_history),
-	mDisplayMean(p.show_mean),
 	mOrientation(p.orientation),
-	mScaleMax(!p.bar_max.isProvided()),
-	mScaleMin(!p.bar_min.isProvided())
+	mAutoScaleMax(!p.bar_max.isProvided()),
+	mAutoScaleMin(!p.bar_min.isProvided()),
+	mTickValue(p.tick_spacing)
 {
+	// tick value will be automatically calculated later
+	if (!p.tick_spacing.isProvided() && p.bar_min.isProvided() && p.bar_max.isProvided())
+	{
+		mTickValue = calc_tick_value(mMinBar, mMaxBar);
+	}
+
 	setStat(p.stat);
 }
 
@@ -204,9 +223,9 @@ void LLStatBar::draw()
 	F32 current = 0, 
 		min     = 0, 
 		max     = 0,
-		mean    = 0,
-		value	= 0;
+		mean    = 0;
 
+	LLLocalClipRect _(getLocalRect());
 	LLTrace::PeriodicRecording& frame_recording = LLTrace::get_frame_recording();
 
 	std::string unit_label;
@@ -221,7 +240,6 @@ void LLStatBar::draw()
 			min     = frame_recording.getPeriodMinPerSec(*mCountFloatp, mNumFrames);
 			max     = frame_recording.getPeriodMaxPerSec(*mCountFloatp, mNumFrames);
 			mean    = frame_recording.getPeriodMeanPerSec(*mCountFloatp, mNumFrames);
-			value	= mDisplayMean ? mean : current;
 		}
 		else
 		{
@@ -229,7 +247,6 @@ void LLStatBar::draw()
 			min     = frame_recording.getPeriodMin(*mCountFloatp, mNumFrames);
 			max     = frame_recording.getPeriodMax(*mCountFloatp, mNumFrames);
 			mean    = frame_recording.getPeriodMean(*mCountFloatp, mNumFrames);
-			value	= mDisplayMean ? mean : current;
 		}
 	}
 	else if (mEventFloatp)
@@ -241,18 +258,16 @@ void LLStatBar::draw()
 		min     = frame_recording.getPeriodMin(*mEventFloatp, mNumFrames);
 		max     = frame_recording.getPeriodMax(*mEventFloatp, mNumFrames);
 		mean    = frame_recording.getPeriodMean(*mEventFloatp, mNumFrames);
-		value	= mDisplayMean ? mean : current;
 	}
 	else if (mSampleFloatp)
 	{
 		LLTrace::Recording& last_frame_recording = frame_recording.getLastRecording();
 		unit_label = mUnitLabel.empty() ? mSampleFloatp->getUnitLabel() : mUnitLabel;
 
-		current = last_frame_recording.getLastValue(*mSampleFloatp);
+		current = last_frame_recording.getMean(*mSampleFloatp);
 		min     = frame_recording.getPeriodMin(*mSampleFloatp, mNumFrames);
 		max     = frame_recording.getPeriodMax(*mSampleFloatp, mNumFrames);
 		mean    = frame_recording.getPeriodMean(*mSampleFloatp, mNumFrames);
-		value	= mDisplayMean ? mean : current;
 	}
 
 	S32 bar_top, bar_left, bar_right, bar_bottom;
@@ -273,16 +288,24 @@ void LLStatBar::draw()
 	const S32 tick_length = 4;
 	const S32 tick_width = 1;
 
-	if ((mScaleMax && max >= mCurMaxBar)|| (mScaleMin && min <= mCurMinBar))
+	if ((mAutoScaleMax && max >= mCurMaxBar)|| (mAutoScaleMin && min <= mCurMinBar))
 	{
-		F32 range_min = min;
-		F32 range_max = max;
-		calc_display_range(range_min, range_max);
-		if (mScaleMax) { mMaxBar = llmax(mMaxBar, range_max); }
-		if (mScaleMin) { mMinBar = llmin(mMinBar, range_min); }
-		mTickValue = calc_reasonable_tick_value(mMinBar, mMaxBar);
-
+		F32 range_min = mAutoScaleMin ? llmin(mMinBar, min) : mMinBar;
+		F32 range_max = mAutoScaleMax ? llmax(mMaxBar, max) : mMaxBar;
+		F32 tick_value = 0.f;
+		calc_auto_scale_range(range_min, range_max, tick_value);
+		if (mAutoScaleMin) { mMinBar = range_min; }
+		if (mAutoScaleMax) { mMaxBar = range_max; }
+		if (mAutoScaleMin && mAutoScaleMax)
+		{
+			mTickValue = tick_value;
+		}
+		else
+		{
+			mTickValue = calc_tick_value(mMinBar, mMaxBar);
+		}
 	}
+
 	mCurMaxBar = LLSmoothInterpolation::lerp(mCurMaxBar, mMaxBar, 0.05f);
 	mCurMinBar = LLSmoothInterpolation::lerp(mCurMinBar, mMinBar, 0.05f);
 
@@ -302,13 +325,13 @@ void LLStatBar::draw()
 											 LLFontGL::LEFT, LLFontGL::TOP);
 	
 	S32 decimal_digits = mDecimalDigits;
-	if (is_approx_equal((F32)(S32)value, value))
+	if (is_approx_equal((F32)(S32)mean, mean))
 	{
 		decimal_digits = 0;
 	}
-	std::string value_str = llformat("%10.*f %s", decimal_digits, value, unit_label.c_str());
+	std::string value_str = llformat("%10.*f %s", decimal_digits, mean, unit_label.c_str());
 
-	// Draw the value.
+	// Draw the current value.
 	if (mOrientation == HORIZONTAL)
 	{
 		LLFontGL::getFontMonospace()->renderUTF8(value_str, 0, bar_right, getRect().getHeight(), 
@@ -330,53 +353,65 @@ void LLStatBar::draw()
 		S32 last_tick = 0;
 		S32 last_label = 0;
 		const S32 MIN_TICK_SPACING  = mOrientation == HORIZONTAL ? 20 : 30;
-		const S32 MIN_LABEL_SPACING = mOrientation == HORIZONTAL ? 40 : 60;
+		const S32 MIN_LABEL_SPACING = mOrientation == HORIZONTAL ? 30 : 60;
 		// start counting from actual min, not current, animating min, so that ticks don't float between numbers
-		for (F32 tick_value = mMinBar; tick_value <= mCurMaxBar; tick_value += mTickValue)
+		// ensure ticks always hit 0
+		if (mTickValue > 0.f)
 		{
-			const S32 begin = llfloor((tick_value - mCurMinBar)*value_scale);
-			const S32 end = begin + tick_width;
-			if (begin - last_tick < MIN_TICK_SPACING)
+			F32 start = mCurMinBar < 0.f
+				? llceil(-mCurMinBar / mTickValue) * -mTickValue
+				: 0.f;
+			for (F32 tick_value = start; ;tick_value += mTickValue)
 			{
-				continue;
-			}
-			last_tick = begin;
-
-			S32 decimal_digits = mDecimalDigits;
-			if (is_approx_equal((F32)(S32)tick_value, tick_value))
-			{
-				decimal_digits = 0;
-			}
-			std::string tick_string = llformat("%10.*f", decimal_digits, tick_value);
-
-			if (mOrientation == HORIZONTAL)
-			{
-				if (begin - last_label > MIN_LABEL_SPACING)
+				const S32 begin = llfloor((tick_value - mCurMinBar)*value_scale);
+				const S32 end = begin + tick_width;
+				if (begin - last_tick < MIN_TICK_SPACING)
 				{
-					gl_rect_2d(bar_left, end, bar_right - tick_length, begin, LLColor4(1.f, 1.f, 1.f, 0.25f));
-					LLFontGL::getFontMonospace()->renderUTF8(tick_string, 0, bar_right, begin,
-						LLColor4(1.f, 1.f, 1.f, 0.5f),
-						LLFontGL::LEFT, LLFontGL::VCENTER);
-					last_label = begin;
+					continue;
 				}
-				else
+				last_tick = begin;
+
+				S32 decimal_digits = mDecimalDigits;
+				if (is_approx_equal((F32)(S32)tick_value, tick_value))
 				{
-					gl_rect_2d(bar_left, end, bar_right - tick_length/2, begin, LLColor4(1.f, 1.f, 1.f, 0.1f));
+					decimal_digits = 0;
 				}
-			}
-			else
-			{
-				if (begin - last_label > MIN_LABEL_SPACING)
+				std::string tick_string = llformat("%10.*f", decimal_digits, tick_value);
+
+				if (mOrientation == HORIZONTAL)
 				{
-					gl_rect_2d(begin, bar_top, end, bar_bottom - tick_length, LLColor4(1.f, 1.f, 1.f, 0.25f));
-					LLFontGL::getFontMonospace()->renderUTF8(tick_string, 0, begin - 1, bar_bottom - tick_length,
-						LLColor4(1.f, 1.f, 1.f, 0.5f),
-						LLFontGL::RIGHT, LLFontGL::TOP);
-					last_label = begin;
+					if (begin - last_label > MIN_LABEL_SPACING)
+					{
+						gl_rect_2d(bar_left, end, bar_right - tick_length, begin, LLColor4(1.f, 1.f, 1.f, 0.25f));
+						LLFontGL::getFontMonospace()->renderUTF8(tick_string, 0, bar_right, begin,
+							LLColor4(1.f, 1.f, 1.f, 0.5f),
+							LLFontGL::LEFT, LLFontGL::VCENTER);
+						last_label = begin;
+					}
+					else
+					{
+						gl_rect_2d(bar_left, end, bar_right - tick_length/2, begin, LLColor4(1.f, 1.f, 1.f, 0.1f));
+					}
 				}
 				else
 				{
-					gl_rect_2d(begin, bar_top, end, bar_bottom - tick_length/2, LLColor4(1.f, 1.f, 1.f, 0.1f));
+					if (begin - last_label > MIN_LABEL_SPACING)
+					{
+						gl_rect_2d(begin, bar_top, end, bar_bottom - tick_length, LLColor4(1.f, 1.f, 1.f, 0.25f));
+						LLFontGL::getFontMonospace()->renderUTF8(tick_string, 0, begin - 1, bar_bottom - tick_length,
+							LLColor4(1.f, 1.f, 1.f, 0.5f),
+							LLFontGL::RIGHT, LLFontGL::TOP);
+						last_label = begin;
+					}
+					else
+					{
+						gl_rect_2d(begin, bar_top, end, bar_bottom - tick_length/2, LLColor4(1.f, 1.f, 1.f, 0.1f));
+					}
+				}
+				// always draw one tick value past end, so we can see part of the text, if possible
+				if (tick_value > mCurMaxBar)
+				{
+					break;
 				}
 			}
 		}
@@ -416,8 +451,7 @@ void LLStatBar::draw()
 		if (mDisplayHistory && (mCountFloatp || mEventFloatp || mSampleFloatp))
 		{
 			const S32 num_values = frame_recording.getNumRecordedPeriods() - 1;
-			F32 begin = 0;
-			F32 end = 0;
+			F32 value = 0;
 			S32 i;
 			gGL.color4f( 1.f, 0.f, 0.f, 1.f );
 			gGL.begin( LLRender::QUADS );
@@ -427,49 +461,41 @@ void LLStatBar::draw()
 			{
 				F32 offset = ((F32)i / (F32)mNumFrames) * span;
 				LLTrace::Recording& recording = frame_recording.getPrevRecording(i);
-				if (mPerSec && mCountFloatp)
+
+				if (mCountFloatp)
 				{
-					begin       = ((recording.getPerSec(*mCountFloatp)  - mCurMinBar) * value_scale);
-					end         = ((recording.getPerSec(*mCountFloatp)  - mCurMinBar) * value_scale) + 1;
+					value       = mPerSec 
+									? recording.getPerSec(*mCountFloatp) 
+									: recording.getSum(*mCountFloatp);
 					num_samples = recording.getSampleCount(*mCountFloatp);
 				}
-				else
+				else if (mEventFloatp)
 				{
-					if (mCountFloatp)
-					{
-						begin       = ((recording.getSum(*mCountFloatp)  - mCurMinBar) * value_scale);
-						end         = ((recording.getSum(*mCountFloatp)  - mCurMinBar) * value_scale) + 1;
-						num_samples = recording.getSampleCount(*mCountFloatp);
-					}
-					else if (mEventFloatp)
-					{
-						begin       = ((recording.getMean(*mEventFloatp)  - mCurMinBar) * value_scale);
-						end         = ((recording.getMean(*mEventFloatp)  - mCurMinBar) * value_scale) + 1;
-						num_samples = recording.getSampleCount(*mEventFloatp);
-					}
-					else if (mSampleFloatp)
-					{
-						begin       = ((recording.getMean(*mSampleFloatp)  - mCurMinBar) * value_scale);
-						end         = ((recording.getMean(*mSampleFloatp)  - mCurMinBar) * value_scale) + 1;
-						num_samples = recording.getSampleCount(*mSampleFloatp);
-					}
- 				}
+					value       = recording.getMean(*mEventFloatp);
+					num_samples = recording.getSampleCount(*mEventFloatp);
+				}
+				else if (mSampleFloatp)
+				{
+					value       = recording.getMean(*mSampleFloatp);
+					num_samples = recording.getSampleCount(*mSampleFloatp);
+				}
 				
 				if (!num_samples) continue;
 
+				F32 begin = (value  - mCurMinBar) * value_scale;
 				if (mOrientation == HORIZONTAL)
 				{
-					gGL.vertex2f((F32)bar_right - offset, end);
+					gGL.vertex2f((F32)bar_right - offset, begin + 1);
 					gGL.vertex2f((F32)bar_right - offset, begin);
-					gGL.vertex2f((F32)bar_right - offset - 1.f, begin);
-					gGL.vertex2f((F32)bar_right - offset - 1.f, end);
+					gGL.vertex2f((F32)bar_right - offset - 1, begin);
+					gGL.vertex2f((F32)bar_right - offset - 1, begin + 1);
 				}
 				else
 				{
-					gGL.vertex2f(begin, (F32)bar_bottom+offset+1.f);
-					gGL.vertex2f(begin, (F32)bar_bottom+offset);
-					gGL.vertex2f(end, (F32)bar_bottom+offset);
-					gGL.vertex2f(end, (F32)bar_bottom+offset+1.f);
+					gGL.vertex2f(begin, (F32)bar_bottom + offset + 1);
+					gGL.vertex2f(begin, (F32)bar_bottom + offset);
+					gGL.vertex2f(begin + 1, (F32)bar_bottom + offset);
+					gGL.vertex2f(begin + 1, (F32)bar_bottom + offset + 1 );
 				}
 			}
 			gGL.end();
@@ -517,9 +543,9 @@ void LLStatBar::setStat(const std::string& stat_name)
 
 void LLStatBar::setRange(F32 bar_min, F32 bar_max)
 {
-	mMinBar		= bar_min;
-	mMaxBar		= bar_max;
-	mTickValue	= calc_reasonable_tick_value(mMinBar, mMaxBar);
+	mMinBar		= llmin(bar_min, bar_max);
+	mMaxBar		= llmax(bar_min, bar_max);
+	mTickValue	= calc_tick_value(mMinBar, mMaxBar);
 }
 
 LLRect LLStatBar::getRequiredRect()
diff --git a/indra/llui/llstatbar.h b/indra/llui/llstatbar.h
index a0299c0efb5cdda18b93da23568c2097c5c784f5..fc925b1a74a1e4c663573815b055e4f548507852 100755
--- a/indra/llui/llstatbar.h
+++ b/indra/llui/llstatbar.h
@@ -49,7 +49,6 @@ class LLStatBar : public LLView
 		Optional<bool>			show_per_sec,
 								show_bar,
 								show_history,
-								show_mean,
 								scale_range;
 
 		Optional<S32>			num_frames,
@@ -60,14 +59,13 @@ class LLStatBar : public LLView
 		Params()
 		:	label("label"),
 			unit_label("unit_label"),
-			bar_min("bar_min", 0.0f),
-			bar_max("bar_max", 0.0f),
-			tick_spacing("tick_spacing", 10.0f),
+			bar_min("bar_min", 0.f),
+			bar_max("bar_max", 0.f),
+			tick_spacing("tick_spacing", 0.f),
 			decimal_digits("decimal_digits", 3),
 			show_per_sec("show_per_sec", true),
 			show_bar("show_bar", false),
 			show_history("show_history", false),
-			show_mean("show_mean", true),
 			scale_range("scale_range", true),
 			num_frames("num_frames", 200),
 			max_height("max_height", 100),
@@ -103,9 +101,8 @@ class LLStatBar : public LLView
 	bool         mPerSec,				// Use the per sec stats.
 				 mDisplayBar,			// Display the bar graph.
 				 mDisplayHistory,
-				 mDisplayMean,			// If true, display mean, if false, display current value
-				 mScaleMax,
-				 mScaleMin;
+				 mAutoScaleMax,
+				 mAutoScaleMin;
 	EOrientation mOrientation;
 
 	LLTrace::TraceType<LLTrace::CountAccumulator>*		mCountFloatp;
diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml
index def660e1e4226ece070c65ab5ac19dad4b3b9551..ad7094c6d81b3a76fc2fa92f40b509e468efbce6 100755
--- a/indra/newview/skins/default/xui/en/floater_stats.xml
+++ b/indra/newview/skins/default/xui/en/floater_stats.xml
@@ -35,10 +35,9 @@
                   unit_label="frames"
                   stat="FPS"
                   decimal_digits="1"
-                  bar_max="60"
                   show_bar="true"
                   show_history="true"/>
-        <stat_bar name="bandwidth"
+       <!-- <stat_bar name="bandwidth"
                   label="Bandwidth"
                   stat="Bandwidth"
                   show_bar="true"/>
@@ -48,8 +47,7 @@
                   decimal_digits="3"/>
         <stat_bar name="ping"
                   label="Ping Sim"
-                  stat="simpingstat"
-                  show_mean="false"/>
+                  stat="simpingstat"/>
       </stat_view>
 
      <stat_view name="advanced"
@@ -179,20 +177,17 @@
                   label="Time Dilation"
                   stat="simtimedilation"
                   decimal_digits="3"
-                  bar_max="1" 
-                  show_mean="false"/>
+                  bar_max="1" />
         <stat_bar name="simfps"
                   label="Sim FPS"
                   stat="simfps"
                   decimal_digits="1"
-                  bar_max="45" 
-                  show_mean="false"/>
+                  bar_max="45" />
         <stat_bar name="simphysicsfps"
                   label="Physics FPS"
                   stat="simphysicsfps"
                   decimal_digits="1"
-                  bar_max="45" 
-                  show_mean="false"/>
+                  bar_max="45" />
         <stat_view name="physicsdetail"
                    label="Physics Details"
                    follows="left|top|right"
@@ -200,58 +195,47 @@
                    show_label="true">
           <stat_bar name="physicspinnedtasks"
                     label="Pinned Objects"
-                    stat="physicspinnedtasks"
-                    show_mean="false"/>
+                    stat="physicspinnedtasks"/>
           <stat_bar name="physicslodtasks"
                     label="Low LOD Objects"
-                    stat="physicslodtasks"
-                    show_mean="false"/>
+                    stat="physicslodtasks"/>
           <stat_bar name="physicsmemoryallocated"
                     label="Memory Allocated"
                     stat="physicsmemoryallocated"
-                    decimal_digits="1"
-                    show_mean="false"/>
+                    decimal_digits="1"/>
         </stat_view>
         <stat_bar name="simagentups"
                   label="Agent Updates/Sec"
                   stat="simagentups"
-                  decimal_digits="1"
-                  show_mean="false"/>
+                  decimal_digits="1"/>
         <stat_bar name="simmainagents"
                   label="Main Agents"
                   stat="simmainagents"
-                  bar_max="80" 
-                  show_mean="false"/>
+                  bar_max="80"/>
         <stat_bar name="simchildagents"
                   label="Child Agents"
-                  stat="simchildagents"
-                  show_mean="false"/>
+                  stat="simchildagents"/>
         <stat_bar name="simobjects"
                   label="Objects"
                   stat="simobjects"
-                  bar_max="30000" 
-                  show_mean="false"/>
+                  bar_max="30000" />
         <stat_bar name="simactiveobjects"
                   label="Active Objects"
                   stat="simactiveobjects"
-                  bar_max="5000" 
-                  show_mean="false"/>
+                  bar_max="5000"/>
         <stat_bar name="simactivescripts"
                   label="Active Scripts"
                   stat="simactivescripts"
-                  bar_max="15000" 
-                  show_mean="false"/>
+                  bar_max="15000"/>
         <stat_bar name="simpctscriptsrun"
                   label="Scripts Run"
                   stat="simpctscriptsrun"
                   bar_max="100"
-                  decimal_digits="3"
-                  show_mean="true"/>
+                  decimal_digits="3"/>
         <stat_bar name="simscripteps"
                   label="Script Events"
                   stat="simscripteps"
-                  unit_label="eps"
-                  show_mean="false"/>
+                  unit_label="eps"/>
         <stat_view name="simpathfinding"
                    label="Pathfinding"
                    follows="left|top|right"
@@ -260,8 +244,7 @@
           <stat_bar name="simsimaistepmsec"
                     label="AI Step Time"
                     stat="simsimaistepmsec"
-                    decimal_digits="3"
-                    show_mean="false"/>
+                    decimal_digits="3"/>
           <stat_bar name="simsimskippedsilhouettesteps"
                     label="Skipped Silhouette Steps"
                     stat="simsimskippedsilhouettesteps"
@@ -270,32 +253,26 @@
           <stat_bar name="simsimpctsteppedcharacters"
                     stat="simsimpctsteppedcharacters"
                     bar_max="100"
-                    decimal_digits="1"
-                    show_mean="true"/>
+                    decimal_digits="1"/>
         </stat_view>
         <stat_bar name="siminpps"
                   label="Packets In"
                   stat="siminpps"
-                  unit_label="pkt/sec"
-                  show_mean="false"/>
+                  unit_label="pkt/sec"/>
         <stat_bar name="simoutpps"
                   label="Packets Out"
                   stat="simoutpps"
-                  unit_label="pkt/sec" 
-                  show_mean="false"/>
+                  unit_label="pkt/sec"/>
         <stat_bar name="simpendingdownloads"
                   label="Pending Downloads"
-                  stat="simpendingdownloads"
-                  show_mean="false"/>
+                  stat="simpendingdownloads"/>
         <stat_bar name="simpendinguploads"
                   label="Pending Uploads"
-                  stat="simpendinguploads"
-                  show_mean="false"/>
+                  stat="simpendinguploads"/>
         <stat_bar name="simtotalunackedbytes"
                   label="Total Unacked Bytes"
                   stat="simtotalunackedbytes"
-                  decimal_digits="1"
-                  show_mean="false"/>
+                  decimal_digits="1"/>
         <stat_view name="simperf"
                    label="Time"
                    follows="left|top|right"
@@ -304,43 +281,35 @@
           <stat_bar name="simframemsec"
                     label="Total Frame Time"
                     stat="simframemsec"
-                    decimal_digits="3"
-                    show_mean="false"/>
+                    decimal_digits="3"/>
           <stat_bar name="simnetmsec"
                     label="Net Time"
                     stat="simnetmsec"
-                    decimal_digits="3"
-                    show_mean="false"/>
+                    decimal_digits="3"/>
           <stat_bar name="simsimphysicsmsec"
                     label="Physics Time"
                     stat="simsimphysicsmsec"
-                    decimal_digits="3"
-                    show_mean="false"/>
+                    decimal_digits="3"/>
           <stat_bar name="simsimothermsec"
                     label="Simulation Time"
                     stat="simsimothermsec"
-                    decimal_digits="3"
-                    show_mean="false"/>
+                    decimal_digits="3"/>
           <stat_bar name="simagentmsec"
                     label="Agent Time"
                     stat="simagentmsec"
-                    decimal_digits="3"
-                    show_mean="false"/>
+                    decimal_digits="3"/>
           <stat_bar name="simimagesmsec"
                     label="Images Time"
                     stat="simimagesmsec"
-                    decimal_digits="3"
-                    show_mean="false"/>
+                    decimal_digits="3"/>
           <stat_bar name="simscriptmsec"
                     label="Script Time"
                     stat="simscriptmsec"
-                    decimal_digits="3"
-                    show_mean="false"/>
+                    decimal_digits="3"/>
           <stat_bar name="simsparemsec"
                     label="Spare Time"
                     stat="simsparemsec"
-                    decimal_digits="3"
-                    show_mean="false"/>
+                    decimal_digits="3"/>
           <stat_view name="timedetails"
                      label="Time Details"
                      follows="left|top|right"
@@ -349,30 +318,25 @@
             <stat_bar name="simsimphysicsstepmsec"
                       label="Physics Step"
                       stat="simsimphysicsstepmsec"
-                      decimal_digits="3"
-                      show_mean="false"/>
+                      decimal_digits="3"/>
             <stat_bar name="simsimphysicsshapeupdatemsec"
                       label="Update Phys Shapes"
                       stat="simsimphysicsshapeupdatemsec"
-                      decimal_digits="3"
-                      show_mean="false"/>
+                      decimal_digits="3"/>
             <stat_bar name="simsimphysicsothermsec"
                       label="Physics Other"
                       stat="simsimphysicsothermsec"
-                      decimal_digits="3"
-                      show_mean="false"/>
+                      decimal_digits="3"/>
             <stat_bar name="simsleepmsec"
                       label="Sleep Time"
                       stat="simsleepmsec"
-                      decimal_digits="3"
-                      show_mean="false"/>
+                      decimal_digits="3"/>
             <stat_bar name="simpumpiomsec"
                       label="Pump IO"
                       stat="simpumpiomsec"
-                      decimal_digits="3"
-                      show_mean="false"/>
+                      decimal_digits="3"/>
           </stat_view>
-        </stat_view>
+        </stat_view>-->
       </stat_view>
     </container_view>
   </scroll_container>