diff --git a/modules/locale/locale.module b/modules/locale/locale.module
index 0788461..c80694c 100644
--- a/modules/locale/locale.module
+++ b/modules/locale/locale.module
@@ -736,19 +736,12 @@ function locale_get_plural($count, $langcode = NULL) {
   $langcode = $langcode ? $langcode : $language->language;
 
   if (!isset($plurals[$langcode][$count])) {
-    if (empty($locale_formula)) {
+    if (!array_key_exists($langcode, $locale_formula)) {
       $language_list = language_list();
-      $locale_formula[$langcode] = $language_list[$langcode]->formula;
-    }
-    if ($locale_formula[$langcode]) {
-      $n = $count;
-      $plurals[$langcode][$count] = @eval('return intval(' . $locale_formula[$langcode] . ');');
-      return $plurals[$langcode][$count];
-    }
-    else {
-      $plurals[$langcode][$count] = -1;
-      return -1;
+      $locale_formula[$langcode] = isset($language_list[$langcode]->formula) ? $language_list[$langcode]->formula : -1;
     }
+    $n = $count;
+    $plurals[$langcode][$count] = @eval('return intval(' . $locale_formula[$langcode] . ');');
   }
   return $plurals[$langcode][$count];
 }
