diff --git a/src/core/re3.cpp b/src/core/re3.cpp
index 8e20ffb3..b9b5c76e 100644
--- a/src/core/re3.cpp
+++ b/src/core/re3.cpp
@@ -146,7 +146,7 @@ LetThemFollowYou(void) {
 		CPed *nearPed = player->m_nearPeds[i];
 		if (nearPed && !nearPed->IsPlayer()) {
 			nearPed->SetObjective(OBJECTIVE_FOLLOW_PED_IN_FORMATION, (void*)player);
-			nearPed->m_pedFormation = (eFormation)(rand() & 7);
+			nearPed->m_pedFormation = (eFormation)(1 + (rand() & 7));
 			nearPed->bScriptObjectiveCompleted = false;
 		}
 	}
diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp
index 1cf15cb6..e9ed2103 100644
--- a/src/peds/Ped.cpp
+++ b/src/peds/Ped.cpp
@@ -388,7 +388,7 @@ CPed::CPed(uint32 pedType) : m_pedIK(this)
 	m_vecOffsetSeek.x = 0.0f;
 	m_vecOffsetSeek.y = 0.0f;
 	m_vecOffsetSeek.z = 0.0f;
-	m_pedFormation = FORMATION_REAR;
+	m_pedFormation = FORMATION_UNDEFINED;
 	m_collidingThingTimer = 0;
 	m_nPedStateTimer = 0;
 	m_actionX = 0;
@@ -2686,7 +2686,7 @@ CPed::SetObjective(eObjective newObj, void *entity)
 		case OBJECTIVE_FOLLOW_PED_IN_FORMATION:
 			m_pedInObjective = (CPed*)entity;
 			m_pedInObjective->RegisterReference((CEntity**)&m_pedInObjective);
-			m_pedFormation = FORMATION_REAR_LEFT;
+			m_pedFormation = FORMATION_REAR;
 			break;
 		case OBJECTIVE_LEAVE_VEHICLE:
 #ifdef VC_PED_PORTS
@@ -14395,6 +14395,9 @@ CPed::ProcessEntityCollision(CEntity *collidingEnt, CColPoint *collidingPoints)
 void
 CPed::SetFormation(eFormation type)
 {
+	// FIX: Formations in GetFormationPosition were in range 1-8, whereas in here it's 0-7.
+	//      To not change the behaviour, range in here tweaked by 1 with the use of enum.
+
 	switch (m_pedFormation) {
 		case FORMATION_REAR:
 		case FORMATION_REAR_LEFT:
diff --git a/src/peds/Ped.h b/src/peds/Ped.h
index 3d7354a3..74d85e56 100644
--- a/src/peds/Ped.h
+++ b/src/peds/Ped.h
@@ -26,6 +26,7 @@ struct CPedAudioData
 
 enum eFormation
 {
+	FORMATION_UNDEFINED,
 	FORMATION_REAR,
 	FORMATION_REAR_LEFT,
 	FORMATION_REAR_RIGHT,