diff --git a/src/simutrans/builder/hausbauer.cc b/src/simutrans/builder/hausbauer.cc
index b63995c2a..34ed70d0f 100644
--- a/src/simutrans/builder/hausbauer.cc
+++ b/src/simutrans/builder/hausbauer.cc
@@ -848,6 +848,20 @@ const building_desc_t* hausbauer_t::get_random_station(const building_desc_t::bt
 }
 
 
+sint16 hausbauer_t::get_earliest_townhall_year()
+{
+	uint16 earliest = 0xFFFF;
+	for(building_desc_t const* const desc : townhalls) {
+		earliest = min( earliest, desc->get_intro_year_month() );
+	}
+	if(  earliest == 0xFFFF  ) {
+		return 0;
+	}
+	// a town hall introduced during a year is of no use to a game starting in January
+	return (earliest + 11) / 12;
+}
+
+
 const building_desc_t* hausbauer_t::get_special(uint32 bev, building_desc_t::btype type, uint16 time, bool ignore_retire, climate cl)
 {
 	weighted_vector_tpl<const building_desc_t *> auswahl(16);
diff --git a/src/simutrans/builder/hausbauer.h b/src/simutrans/builder/hausbauer.h
index 1452b7475..99e30d5ba 100644
--- a/src/simutrans/builder/hausbauer.h
+++ b/src/simutrans/builder/hausbauer.h
@@ -96,6 +96,12 @@ public:
 	/// @returns headquarters with level @p level (takes the first matching one)
 	static const building_desc_t* get_headquarters(int level, uint16 time);
 
+	/**
+	 * @returns the first year in which a town hall can be built, so no city could
+	 * exist before it. Zero if the pakset has no town hall to ask.
+	 */
+	static sint16 get_earliest_townhall_year();
+
 	/// @returns a random tourist attraction matching the requirements.
 	static const building_desc_t* get_random_attraction(uint16 time, bool ignore_retire, climate cl)
 	{
diff --git a/src/simutrans/world/simworld.cc b/src/simutrans/world/simworld.cc
index 45c8bb88b..5e866e5e0 100644
--- a/src/simutrans/world/simworld.cc
+++ b/src/simutrans/world/simworld.cc
@@ -1238,6 +1238,10 @@ void karte_t::init(settings_t* const sets, sint8 const* const h_field)
 	schedule_counter = 0;
 	// ticks = 0x7FFFF800;  // Testing the 31->32 bit step
 
+	if(  settings.get_use_timeline()  ) {
+		// before the first town hall no city could be founded, so do not start there
+		settings.set_starting_year( max( settings.get_starting_year(), hausbauer_t::get_earliest_townhall_year() ) );
+	}
 	last_month = 0;
 	last_year = settings.get_starting_year();
 	current_month = last_month + (last_year*12);
