diff --git a/doc/ChangeLog.html b/doc/ChangeLog.html
index 8ce62731b..f0098a58e 100644
--- a/doc/ChangeLog.html
+++ b/doc/ChangeLog.html
@@ -944,6 +944,8 @@
     <LI>Fixed bug #594439: Peasant Repairs when no resources (from Russell
 	Smith).
     <LI>Fixed bug #611416: Objectives not saved (from Jimmy Salmon).
+    <LI>Fixed bug #621818: Save&amp;Load/Replay: Building restrictions (from
+	Jimmy Salmon).
     <LI>+++
     </UL>
 </UL>
diff --git a/src/unit/script_unit.cpp b/src/unit/script_unit.cpp
index 3d4556859..b0ca160ac 100644
--- a/src/unit/script_unit.cpp
+++ b/src/unit/script_unit.cpp
@@ -704,6 +704,10 @@ local SCM CclUnit(SCM list)
 	    CclParseOrders(unit,sublist);
 	    // now we know unit's action so we can assign it to a player
 	    AssignUnitToPlayer (unit, player);
+	    if( unit->Orders[0].Action==UnitActionBuilded ) {
+		// HACK: the building is not ready yet
+		unit->Player->UnitTypesCount[type->Type]--;
+	    }
 	} else if( gh_eq_p(value,gh_symbol2scm("saved-order")) ) {
 	    value=gh_car(list);
 	    list=gh_cdr(list);