public DataTransferTracker(long minutes, LogHandler logHandler)
        {
            if (minutes < 1)
            {
                throw new System.ArgumentOutOfRangeException("The number of minutes ago the track starts cannot be less than 1");
            }
            minutesIntoPast = minutes;

            // find the data transfer over the period
            setStartInstantValues(logHandler);
            DataTransferInstant currentInstant = logHandler.getDataInstant(DateTime.UtcNow.Ticks);
            bytesIn = currentInstant.bytesIn - startInstant.bytesIn;
            bytesOut = currentInstant.bytesOut - startInstant.bytesOut;

            // initialise the seconds
            second = 0;
            for (byte s = 0; s < 60; s++)
                seconds[s] = new DataTransferLump(0, 0);
        }
        /// <summary>
        /// Loads the values regarding the start instant for the tracker
        /// </summary>
        /// <param name="logHandler"></param>
        private void setStartInstantValues(LogHandler logHandler)
        {
            startInstant = logHandler.getDataInstant(ticksAtStartPoint());
            // try looking slightly after a minute ahead to account for any delays in saving
            minuteAfterStartInstant = logHandler.getDataInstant(ticksAtStartPoint() + (long)(TimeSpan.TicksPerMinute * 0.98));

            // work out how many bytes change should be made each second so there's no sudden jump when the minute changes
            long inDiff = minuteAfterStartInstant.bytesIn - startInstant.bytesIn;
            long outDiff = minuteAfterStartInstant.bytesOut - startInstant.bytesOut;
            if (inDiff < 0)
            {
                inDiff = -inDiff;
            }
            if (outDiff < 0)
            {
                outDiff = -outDiff;
            }
            bytesStartPerSecond.bytesIn = inDiff / 60;
            bytesStartPerSecond.bytesOut = outDiff / 60;

            bytesStartLeftover.bytesIn = inDiff - bytesStartPerSecond.bytesIn * 60;
            bytesStartLeftover.bytesOut = outDiff - bytesStartPerSecond.bytesOut * 60;
        }