diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index d544b992efe3f1f4985091df5e17dffd6f8043df..9d30830e71ce05d066c6e88b2882107b63af4a60 100755
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -294,7 +294,7 @@ U32 gForegroundFrameCount = 0; // number of frames that app window was in foregr
 LLPumpIO* gServicePump = NULL;
 
 LLUnitImplicit<U64, LLUnits::Microseconds> gFrameTime = 0;
-LLUnitImplicit<F32, LLUnits::Seconds> gFrameTimeSeconds = 0.f;
+F32 gFrameTimeSeconds = 0.f;
 LLUnitImplicit<F32, LLUnits::Seconds> gFrameIntervalSeconds = 0.f;
 F32 gFPSClamped = 10.f;						// Pretend we start at target rate.
 F32 gFrameDTClamped = 0.f;					// Time between adjacent checks to network for packets
@@ -1464,7 +1464,7 @@ bool LLAppViewer::mainLoop()
 					ms_sleep(500);
 				}
 
-				const F64 max_idle_time = llmin(.005*10.0*gFrameTimeSeconds, LLUnitImplicit<F32, LLUnits::Seconds>(0.005f)); // 5 ms a second
+				const F64 max_idle_time = llmin(.005f*10.0f*gFrameTimeSeconds, (0.005f)); // 5 ms a second
 				idleTimer.reset();
 				S32 total_work_pending = 0;
 				S32 total_io_pending = 0;	
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index 60a1045f58f26170913155c64c931fa18fbdbb2b..76724a966266959314f99b3df4948c2cce62e4f1 100755
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -336,7 +336,7 @@ extern LLPumpIO* gServicePump;
 
 extern LLUnitImplicit<U64, LLUnits::Microseconds>	gStartTime;
 extern LLUnitImplicit<U64, LLUnits::Microseconds>   gFrameTime;					// The timestamp of the most-recently-processed frame
-extern LLUnitImplicit<F32, LLUnits::Seconds>		gFrameTimeSeconds;			// Loses msec precision after ~4.5 hours...
+extern F32		gFrameTimeSeconds;			// Loses msec precision after ~4.5 hours...
 extern LLUnitImplicit<F32, LLUnits::Seconds>		gFrameIntervalSeconds;		// Elapsed time between current and previous gFrameTimeSeconds
 extern F32		gFPSClamped;				// Frames per second, smoothed, weighted toward last frame
 extern F32		gFrameDTClamped;
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 933cc7406405f8b02060baeee891a6472b491be2..b1ff0472331f7f602108bb6ca14d56e4387692fe 100755
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -1429,8 +1429,9 @@ bool idle_startup()
 
 		LL_DEBUGS("AppInit") << "Initializing camera..." << LL_ENDL;
 		gFrameTime    = totalTime();
-		LLUnit<F32, LLUnits::Seconds> last_time = gFrameTimeSeconds;
-		gFrameTimeSeconds = (gFrameTime - gStartTime);
+		F32 last_time = gFrameTimeSeconds;
+		const F64 SEC_TO_MICROSEC = 1000000.f;
+		gFrameTimeSeconds = (F32)((gFrameTime - gStartTime) / SEC_TO_MICROSEC);
 
 		gFrameIntervalSeconds = gFrameTimeSeconds - last_time;
 		if (gFrameIntervalSeconds < 0.f)
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index 4072ab524e0a27f2ca44b22baf850290763d95f9..0b75d44096696a004f3ac2eab3b434f20e97c879 100755
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -1000,9 +1000,10 @@ void LLViewerObjectList::update(LLAgent &agent, LLWorld &world)
 	// Time _can_ go backwards, for example if the user changes the system clock.
 	// It doesn't cause any fatal problems (just some oddness with stats), so we shouldn't assert here.
 //	llassert(time > gFrameTime);
-	LLUnit<F64, LLUnits::Seconds> time_diff = time - gFrameTime;
+	const F64 SEC_TO_MICROSEC = 1000000.f;
+	F64 time_diff = U64_to_F64(time - gFrameTime)/SEC_TO_MICROSEC;
 	gFrameTime	= time;
-	LLUnit<F64, LLUnits::Seconds> time_since_start = gFrameTime - gStartTime;
+	F64 time_since_start = U64_to_F64(gFrameTime - gStartTime)/SEC_TO_MICROSEC;
 	gFrameTimeSeconds = time_since_start;
 
 	gFrameIntervalSeconds = gFrameTimeSeconds - last_time;
diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index 69198ed53dff80ab48f7a3b4810ee931394a4fd0..94be8e2a83336a9d69061505e207ceee4b04917a 100755
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -593,7 +593,7 @@ void send_stats()
 	S32 window_height = gViewerWindow->getWindowHeightRaw();
 	S32 window_size = (window_width * window_height) / 1024;
 	misc["string_1"] = llformat("%d", window_size);
-	misc["string_2"] = llformat("Texture Time: %.2f, Total Time: %.2f", gTextureTimer.getElapsedTimeF32(), gFrameTimeSeconds.value());
+	misc["string_2"] = llformat("Texture Time: %.2f, Total Time: %.2f", gTextureTimer.getElapsedTimeF32(), gFrameTimeSeconds);
 
 // 	misc["int_1"] = LLSD::Integer(gSavedSettings.getU32("RenderQualityPerformance")); // Steve: 1.21
 // 	misc["int_2"] = LLSD::Integer(gFrameStalls); // Steve: 1.21