diff --git a/src/date.cpp b/src/date.cpp
index 9122b21..f0667dd 100644
--- a/src/date.cpp
+++ b/src/date.cpp
@@ -167,8 +167,12 @@ extern void TownsYearlyLoop();
 extern void ShowEndGameChart();
 
 
-static const Month _autosave_months[] = {
+static const int _autosave_intervals[] = {
 	 0, ///< never
+	
+	 1,  ///< every day
+ 	 7,  ///< every week
+
 	 1, ///< every month
 	 3, ///< every 3 months
 	 6, ///< every 6 months
@@ -224,7 +228,7 @@ static void OnNewMonth()
 		SaveOrLoad(name, SL_SAVE, AUTOSAVE_DIR);
 	}
 
-	if (_settings_client.gui.autosave != 0 && (_cur_month % _autosave_months[_settings_client.gui.autosave]) == 0) {
+	if (_settings_client.gui.autosave >= 3 && (_cur_month % _autosave_intervals[_settings_client.gui.autosave]) == 0) {
 		_do_autosave = true;
 		RedrawAutosave();
 	}
@@ -246,6 +250,12 @@ static void OnNewMonth()
  */
 static void OnNewDay()
 {
+	// XXX: use day-of-month?
+	if (_settings_client.gui.autosave != 0 && _settings_client.gui.autosave <= 2 && (_date % _autosave_intervals[_settings_client.gui.autosave]) == 0) {
+		_do_autosave = true;
+		RedrawAutosave();
+	}
+
 #ifdef ENABLE_NETWORK
 	NetworkChatMessageDailyLoop();
 #endif /* ENABLE_NETWORK */
diff --git a/src/lang/english.txt b/src/lang/english.txt
index d2d9f65..22daf22 100644
--- a/src/lang/english.txt
+++ b/src/lang/english.txt
@@ -922,6 +922,8 @@ STR_GAME_OPTIONS_AUTOSAVE_FRAME                                 :{BLACK}Autosave
 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP                      :{BLACK}Select interval between automatic game saves
 
 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF                          :Off
+STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_DAY                  :Every day
+STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_WEEK                 :Every week
 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH                :Every month
 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS               :Every 3 months
 STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS               :Every 6 months
diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp
index 9f35482..44cbb8a 100644
--- a/src/settings_gui.cpp
+++ b/src/settings_gui.cpp
@@ -53,6 +53,8 @@ static const StringID _driveside_dropdown[] = {
 
 static const StringID _autosave_dropdown[] = {
 	STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF,
+	STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_DAY,
+	STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_WEEK,
 	STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH,
 	STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS,
 	STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS,
diff --git a/src/table/settings.h b/src/table/settings.h
index 7b7971c..c0b6dce 100644
--- a/src/table/settings.h
+++ b/src/table/settings.h
@@ -289,7 +289,7 @@ static const char *_locale_currencies = "GBP|USD|EUR|YEN|ATS|BEF|CHF|CZK|DEM|DKK
 static const char *_locale_units = "imperial|metric|si";
 static const char *_town_names = "english|french|german|american|latin|silly|swedish|dutch|finnish|polish|slovak|norwegian|hungarian|austrian|romanian|czech|swiss|danish|turkish|italian|catalan";
 static const char *_climates = "temperate|arctic|tropic|toyland";
-static const char *_autosave_interval = "off|monthly|quarterly|half year|yearly";
+static const char *_autosave_interval = "off|daily|weekly|monthly|quarterly|half year|yearly";
 static const char *_roadsides = "left|right";
 static const char *_savegame_date = "long|short|iso";
 #ifdef ENABLE_NETWORK
@@ -317,7 +317,7 @@ static const SettingDesc _gameopt_settings[] = {
 	    SDT_OMANY(GameSettings, game_creation.landscape,  SLE_UINT8,                     0, 0, 0, 3, _climates, STR_NULL, NULL, ConvertLandscape),
 	      SDT_VAR(GameSettings, game_creation.snow_line,  SLE_UINT8,                     0, 0, DEF_SNOWLINE_HEIGHT * TILE_HEIGHT, MIN_SNOWLINE_HEIGHT * TILE_HEIGHT, DEF_SNOWLINE_HEIGHT * TILE_HEIGHT, 0, STR_NULL, NULL),
 	 SDT_CONDNULL(                                                1,  0, 22),
- SDTC_CONDOMANY(              gui.autosave,             SLE_UINT8, 23, SL_MAX_VERSION, S, 0, 1, 4, _autosave_interval, STR_NULL, NULL),
+ SDTC_CONDOMANY(              gui.autosave,             SLE_UINT8, 23, SL_MAX_VERSION, S, 0, 3, 6, _autosave_interval, STR_NULL, NULL),
 	    SDT_OMANY(GameSettings, vehicle.road_side,        SLE_UINT8,                     0, 0, 1, 1, _roadsides, STR_NULL, NULL, NULL),
 	    SDT_END()
 };
@@ -537,7 +537,7 @@ const SettingDesc _settings[] = {
 
 	/***************************************************************************/
 	/* Unsaved setting variables. */
-	SDTC_OMANY(gui.autosave,                  SLE_UINT8, S,  0, 1, 4, _autosave_interval,     STR_NULL,                                       NULL),
+	SDTC_OMANY(gui.autosave,                  SLE_UINT8, S,  0, 3, 6, _autosave_interval,     STR_NULL,                                       NULL),
 	 SDTC_BOOL(gui.threaded_saves,                       S,  0,  true,                        STR_NULL,                                       NULL),
 	SDTC_OMANY(gui.date_format_in_default_names,SLE_UINT8,S,MS, 0, 2, _savegame_date,         STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES,   NULL),
 	 SDTC_BOOL(gui.vehicle_speed,                        S,  0,  true,                        STR_CONFIG_SETTING_VEHICLESPEED,                NULL),
