diff --git a/src/com/android/deskclock/data/SettingsDAO.java b/src/com/android/deskclock/data/SettingsDAO.java
index 1205acd..7e9408f 100644
--- a/src/com/android/deskclock/data/SettingsDAO.java
+++ b/src/com/android/deskclock/data/SettingsDAO.java
@@ -114,19 +114,21 @@
     static TimeZone getHomeTimeZone(Context context, SharedPreferences prefs, TimeZone defaultTZ) {
         String timeZoneId = prefs.getString(SettingsActivity.KEY_HOME_TZ, null);
 
-        // If no home timezone has yet been recorded, do so now.
-        if (timeZoneId == null) {
-            timeZoneId = defaultTZ.getID();
-
-            // If the default timezone from framework is acceptable, save it.
-            if (getTimeZones(context, System.currentTimeMillis()).contains(timeZoneId)) {
-                prefs.edit().putString(SettingsActivity.KEY_HOME_TZ, timeZoneId).apply();
-            }
+        // If the recorded home timezone is legal, use it.
+        final TimeZones timeZones = getTimeZones(context, System.currentTimeMillis());
+        if (timeZones.contains(timeZoneId)) {
+            return TimeZone.getTimeZone(timeZoneId);
         }
 
-        // The timezone returned here may be a valid value from prior calls or a temporary value
-        // created using the given default timezone.
-        return TimeZone.getTimeZone(timeZoneId);
+        // No legal home timezone has yet been recorded, attempt to record the default.
+        timeZoneId = defaultTZ.getID();
+        if (timeZones.contains(timeZoneId)) {
+            prefs.edit().putString(SettingsActivity.KEY_HOME_TZ, timeZoneId).apply();
+        }
+
+        // The timezone returned here may be valid or invalid. When it matches TimeZone.getDefault()
+        // the Home city will not show, regardless of its validity.
+        return defaultTZ;
     }
 
     /**
