Index: gui/money_frame.cc
===================================================================
--- gui/money_frame.cc	(revision 2832)
+++ gui/money_frame.cc	(working copy)
@@ -71,7 +71,7 @@
  */
 const char *money_frame_t::display_money(int type, char *buf, int old)
 {
-	money_to_string(buf, sp->get_finance_history_year(old, type) / 100.0 );
+	money_to_string(buf, (sp->*finance_history)(old, type) / 100.0 );
 	return(buf);
 }
 
@@ -81,7 +81,7 @@
  */
 int money_frame_t::get_money_colour(int type, int old)
 {
-	sint64 i = sp->get_finance_history_year(old, type);
+	sint64 i = (sp->*finance_history)(old, type);
 	if (i < 0) return MONEY_MINUS;
 	if (i > 0) return MONEY_PLUS;
 	return COL_YELLOW;
@@ -239,6 +239,14 @@
 
 	add_komponente(&warn);
 
+	finance_history = &spieler_t::get_finance_history_year;
+	monthlyyearly.init(button_t::box, "Yearly", koord(left, 0), koord(120, BUTTONSPACE));
+	monthlyyearly.background = COL_WHITE;
+	monthlyyearly.add_listener(this);
+	add_komponente(&monthlyyearly);
+	monthlyyearly.set_tooltip( NULL );
+	monthlyyearly.enable();
+
 	// easier headquarter access
 	old_level = sp->get_headquarter_level();
 	old_pos = sp->get_headquarter_pos();
@@ -329,21 +337,21 @@
 	old_omoney.set_text(display_money(COST_OPERATING_PROFIT, str_buf[13], 1));
 
 	// transported goods
-	money_to_string(str_buf[20], sp->get_finance_history_year(0, COST_ALL_TRANSPORTED) );
+	money_to_string(str_buf[20], (sp->*finance_history)(0, COST_ALL_TRANSPORTED) );
 	str_buf[20][strlen(str_buf[20])-4] = 0;	// remove comma
 	transport.set_text(str_buf[20]);
 	transport.set_color(get_money_colour(COST_ALL_TRANSPORTED, 0));
 
-	money_to_string(str_buf[21], sp->get_finance_history_year(1, COST_ALL_TRANSPORTED) );
+	money_to_string(str_buf[21], (sp->*finance_history)(1, COST_ALL_TRANSPORTED) );
 	str_buf[21][strlen(str_buf[21])-4] = 0;	// remove comma
 	old_transport.set_text(str_buf[21]);
 	old_transport.set_color(get_money_colour(COST_ALL_TRANSPORTED, 0));
 
-	//money_to_string(str_buf[22], sp->get_finance_history_year(0, COST_POWERLINES) );
+	//money_to_string(str_buf[22], (sp->*finance_history)(0, COST_POWERLINES) );
 	powerline.set_text(display_money(COST_POWERLINES, str_buf[22], 0)); //set_text(str_buf[22]);
 	powerline.set_color(get_money_colour(COST_POWERLINES, 0));
 
-	//money_to_string(str_buf[23], sp->get_finance_history_year(1, COST_POWERLINES) );
+	//money_to_string(str_buf[23], (sp->*finance_history)(1, COST_POWERLINES) );
 	old_powerline.set_text(display_money(COST_POWERLINES, str_buf[23], 1));
 	old_powerline.set_color(get_money_colour(COST_POWERLINES, 1));
 
@@ -452,6 +460,25 @@
 
 bool money_frame_t::action_triggered( gui_action_creator_t *komp,value_t /* */)
 {
+	if(komp==&monthlyyearly) {
+		finance_history_fn year = &spieler_t::get_finance_history_year;
+		finance_history_fn month = &spieler_t::get_finance_history_month;
+		if (finance_history==year) {
+			monthlyyearly.set_text("Monthly");
+			finance_history = month;
+			tylabel.set_text("This Month:");
+			lylabel.set_text("Last Month:");
+			tylabel2.set_text("This Month:");
+		}
+		else {
+			monthlyyearly.set_text("Yearly");
+			finance_history = year;
+			tylabel.set_text("This Year:");
+			lylabel.set_text("Last Year:");
+			tylabel2.set_text("This Year:");
+		}
+		return true;
+	}
 	if(komp==&headquarter) {
 		sp->get_welt()->set_werkzeug( werkzeug_t::general_tool[WKZ_HEADQUARTER], sp );
 		return true;
Index: gui/money_frame.h
===================================================================
--- gui/money_frame.h	(revision 2832)
+++ gui/money_frame.h	(working copy)
@@ -91,6 +91,11 @@
 	static char digit[4];
 	gui_tab_panel_t year_month_tabs;
 
+	typedef sint64(spieler_t::*finance_history_fn)(int, int);
+
+	button_t monthlyyearly;
+	finance_history_fn finance_history;
+
 	button_t headquarter, goto_headquarter;
 	char headquarter_tooltip[1024];
 	world_view_t headquarter_view;
