diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 62197406b65daa46fccbdf9bdc666bd122cb3fad..3b9b3a51d5823eec6e28f8e115d4e5e3a0e3d4a2 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -2817,16 +2817,16 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
-    <key>FirstRunThisInstall</key>
+    <key>HadFirstSuccessfulLogin</key>
     <map>
       <key>Comment</key>
-      <string>Specifies that you have not run the viewer since you installed the latest update</string>
+      <string>Specifies whether you have successfully logged in at least once before</string>
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>1</integer>
+      <integer>0</integer>
     </map>
     <key>FirstSelectedDisabledPopups</key>
     <map>
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 2d694eefd350a8ab2e71f114463c4700b0c00cc5..2f90885df3a6907c8e56a323347f5866f7105bf5 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -2611,7 +2611,7 @@ void LLAppViewer::handleViewerCrash()
 	gDebugInfo["StartupState"] = LLStartUp::getStartupStateString();
 	gDebugInfo["RAMInfo"]["Allocated"] = (LLSD::Integer) LLMemory::getCurrentRSS() >> 10;
 	gDebugInfo["FirstLogin"] = (LLSD::Boolean) gAgent.isFirstLogin();
-	gDebugInfo["FirstRunThisInstall"] = gSavedSettings.getBOOL("FirstRunThisInstall");
+	gDebugInfo["HadFirstSuccessfulLogin"] = gSavedSettings.getBOOL("HadFirstSuccessfulLogin");
 
 	if(gLogoutInProgress)
 	{
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index af9e791223c9e2d3c3d0910131be97aeca0f71f7..df9002facc1437775d23a486ee60902ccc1e882b 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -676,7 +676,7 @@ void LLPanelLogin::refreshLocation( bool force_visible )
 		// Don't show on first run after install
 		// Otherwise ShowStartLocation defaults to true.
 		show_start = gSavedSettings.getBOOL("ShowStartLocation")
-					&& !gSavedSettings.getBOOL("FirstRunThisInstall");
+					&& gSavedSettings.getBOOL("HadFirstSuccessfulLogin");
 	}
 
 	sInstance->childSetVisible("start_location_combo", show_start);
@@ -847,7 +847,7 @@ void LLPanelLogin::loadLoginPage()
 		oStr << "&auto_login=TRUE";
 	}
 	if (gSavedSettings.getBOOL("ShowStartLocation")
-		&& !gSavedSettings.getBOOL("FirstRunThisInstall"))
+		&& gSavedSettings.getBOOL("HadFirstSuccessfulLogin"))
 	{
 		oStr << "&show_start_location=TRUE";
 	}	
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 522adc05ced2b34596aa580571b6c58b8da80a2a..5cca87bd712840c9cf086d534866c8d2126bf765 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -773,8 +773,6 @@ bool idle_startup()
 
 			LLPanelLogin::giveFocus();
 
-			gSavedSettings.setBOOL("FirstRunThisInstall", FALSE);
-
 			LLStartUp::setStartupState( STATE_LOGIN_WAIT );		// Wait for user input
 		}
 		else
@@ -2012,6 +2010,9 @@ bool idle_startup()
 
 		LLStartUp::setStartupState( STATE_STARTED );
 
+		// Mark that we have successfully logged in at least once
+		gSavedSettings.setBOOL("HadFirstSuccessfulLogin", TRUE);
+
 		// Unmute audio if desired and setup volumes.
 		// Unmute audio if desired and setup volumes.
 		// This is a not-uncommon crash site, so surround it with