public void RecalculateTotals(IEnumerable <FlightBeacon> passedBeacons) { RecalculateFlightTime(); // calculate distance var lastPoint = new Point() { Latitude = TakeoffLatitude, Longitude = TakeoffLongitude }; Distance = 0; foreach (var passedBeacon in passedBeacons) { Distance += EarthCalculations.DistanceInMeters(lastPoint.Latitude, lastPoint.Longitude, passedBeacon.Latitude, passedBeacon.Longitude); } Distance += EarthCalculations.DistanceInMeters(lastPoint.Latitude, lastPoint.Longitude, LandingLatitude, LandingLongitude); // calculate points TotalPoints = passedBeacons.Sum(fb => fb.Points); if (Category == 0) { TotalPoints = (int)(0.5 + TotalPoints * 1.3); } // 1.3 coeff for para if (LandingBeaconId != -1) { TotalPoints = (int)(0.5 + TotalPoints * 1.2); } // 1.2 for landing in a designated spot }