During scheduling, the CPM algorithm conducts a forward pass that calculates the earliest start and finish dates for each activity, based on the start or finish dates of predecessor activities along with the duration of the activity itself. It then conducts a backward pass to calculate the latest start and finish dates for each activity, based on the start or finish dates of successor activities and the duration of the activity itself. From these dates, the total float is calculated for each activity to determine how much scheduling flexibility each activity has. Activities that have zero float must start on time to prevent the schedule from slipping. These are the activities that define the project’s critical path.