Index: apps/settings.c
===================================================================
--- apps/settings.c	(Revision 13281)
+++ apps/settings.c	(Arbeitskopie)
@@ -725,6 +725,7 @@
     set_poweroff_timeout(global_settings.poweroff);
 
     set_battery_capacity(global_settings.battery_capacity);
+    set_runtime_scale(global_settings.max_runtime);
 #if BATTERY_TYPES_COUNT > 1
     set_battery_type(global_settings.battery_type);
 #endif
Index: apps/lang/english.lang
===================================================================
--- apps/lang/english.lang	(Revision 13281)
+++ apps/lang/english.lang	(Arbeitskopie)
@@ -10772,3 +10772,17 @@
     *: "Playlist Viewer Settings"
   </voice>
 </phrase>
+<phrase>
+  id: LANG_MAX_RUNTIME
+  desc: runtime prediction set by user
+  user:
+  <source>
+    *: "Estimated Maximum Runtime"
+  </source>
+  <dest>
+    *: "Estimated Maximum Runtime"
+  </dest>
+  <voice>
+    *: "Estimated Maximum Runtime"
+  </voice>
+</phrase>
Index: apps/settings.h
===================================================================
--- apps/settings.h	(Revision 13281)
+++ apps/settings.h	(Arbeitskopie)
@@ -720,6 +720,7 @@
 #ifdef HAVE_BUTTON_LIGHT
     int button_light_timeout;
 #endif
+    int max_runtime;
 };
 
 /** global variables **/
Index: apps/menus/settings_menu.c
===================================================================
--- apps/menus/settings_menu.c	(Revision 13281)
+++ apps/menus/settings_menu.c	(Arbeitskopie)
@@ -141,8 +141,11 @@
 MENUITEM_SETTING(usb_charging, &global_settings.usb_charging, usbcharging_callback);
 #endif
 #endif
+
+MENUITEM_SETTING(max_runtime, &global_settings.max_runtime, NULL);
+
 MAKE_MENU(battery_menu, ID2P(LANG_BATTERY_MENU), 0, Icon_NOICON,
-          &battery_capacity,
+          &battery_capacity, &max_runtime,
 #if BATTERY_TYPES_COUNT > 1
             &battery_type,
 #endif
Index: apps/settings_list.c
===================================================================
--- apps/settings_list.c	(Revision 13281)
+++ apps/settings_list.c	(Arbeitskopie)
@@ -177,6 +177,14 @@
         snprintf(buffer, buffer_size, "%dm", poweroff_idle_timer_times[val]);
 }
 
+static void max_runtime_formatter(char *buffer, int buffer_size,
+                                  int val, const char *unit)
+{
+    (void)unit;
+    int mins = battery_time_max() * val / 20; 
+    snprintf(buffer, buffer_size, "%dh %dm", mins / 60, mins % 60);
+}
+
 #define NVRAM(bytes) (bytes<<F_NVRAM_MASK_SHIFT)
 /** NOTE: NVRAM_CONFIG_VERSION is in settings_list.h
      and you may need to update it if you edit this file */
@@ -1183,6 +1191,9 @@
         0, 18, 1, backlight_formatter, backlight_getlang, 
         button_backlight_set_timeout),
 #endif
+
+    INT_SETTING(0, max_runtime, LANG_MAX_RUNTIME, 20, "runtime scale", UNIT_MIN,
+                1, 50, 1, max_runtime_formatter, NULL, set_runtime_scale),
 };
 
 const int nb_settings = sizeof(settings)/sizeof(*settings);
Index: firmware/export/powermgmt.h
===================================================================
--- firmware/export/powermgmt.h	(Revision 13281)
+++ firmware/export/powermgmt.h	(Arbeitskopie)
@@ -158,4 +158,7 @@
 void shutdown_hw(void);
 void sys_poweroff(void);
 
+void set_runtime_scale(int scale);
+int battery_time_max(void);
+
 #endif
Index: firmware/powermgmt.c
===================================================================
--- firmware/powermgmt.c	(Revision 13281)
+++ firmware/powermgmt.c	(Arbeitskopie)
@@ -537,6 +537,19 @@
     return level;
 }
 
+static int runtime_scale = 20;          /* in 1/5 percent */
+
+void set_runtime_scale(int scale)
+{
+    runtime_scale = scale;
+}
+
+int battery_time_max(void)
+{
+    int val = 60 * battery_capacity / runcurrent();
+    return val;
+}
+
 static void battery_status_update(void)
 {
     int level = voltage_to_battery_level(battery_centivolts);
@@ -591,8 +604,8 @@
 #endif /* BATT_LIPOL1300 */
     {
         if ((battery_centivolts + 2) > percent_to_volt_discharge[0][0])
-            powermgmt_est_runningtime_min = (level + battery_percent) * 60 *
-                                         battery_capacity / 200 / runcurrent();
+            powermgmt_est_runningtime_min = (level + battery_percent) * 60
+                * runtime_scale * battery_capacity / 200 / 20 / runcurrent();
         else
             powermgmt_est_runningtime_min = (battery_centivolts -
                                              battery_level_shutoff[0]) / 2;
