A method for preventing overestimation of available bandwidth, comprising: generating a bandwidth estimation for an adaptive bitrate, ABR, client configured to receive ABR encoded chunks; evaluating a current state of a buffer of the ABR client; determining an encoding rate to be used for the ABR client based, at least, on the bandwidth estimation and the current state of the buffer; the method characterised by: determining a minimum fetch interval I(b) based on a current level, b, of the buffer, wherein: the minimum fetch interval is a time period the ABR client waits before fetching a next chunk having the determined coding rate; if the current level b is less that a minimum level b min, the minimum fetch interval I(b) equals zero; if the current level b is greater than or equal to a maximum level, b max, the minimum fetch interval I(b) equals the duration D of each encoded ABR chunk; and otherwise, the minimum fetch interval is defined as a function: D * b − b min / b max − b min, wherein the function linearly interpolates the minimum fetch interval I(b) from zero to the duration D as the level b increases from the minimum level b min to the maximum level, b max. generating a bandwidth estimation for an adaptive bitrate, ABR, client configured to receive ABR encoded chunks; evaluating a current state of a buffer of the ABR client; determining an encoding rate to be used for the ABR client based, at least, on the bandwidth estimation and the current state of the buffer; the method characterised by: determining a minimum fetch interval I(b) based on a current level, b, of the buffer, wherein: the minimum fetch interval is a time period the ABR client waits before fetching a next chunk having the determined coding rate; if the current level b is less that a minimum level b min, the minimum fetch interval I(b) equals zero; if the current level b is greater than or equal to a maximum level, b max, the minimum fetch interval I(b) equals the duration D of each encoded ABR chunk; and otherwise, the minimum fetch interval is defined as a function: D * b − b min / b max − b min, wherein the function linearly interpolates the minimum fetch interval I(b) from zero to the duration D as the level b increases from the minimum level b min to the maximum level, b max. determining a minimum fetch interval I(b) based on a current level, b, of the buffer, wherein: the minimum fetch interval is a time period the ABR client waits before fetching a next chunk having the determined coding rate; if the current level b is less that a minimum level b min, the minimum fetch interval I(b) equals zero; if the current level b is greater than or equal to a maximum level, b max, the minimum fetch interval I(b) equals the duration D of each encoded ABR chunk; and otherwise, the minimum fetch interval is defined as a function: D * b − b min / b max − b min, the minimum fetch interval is a time period the ABR client waits before fetching a next chunk having the determined coding rate; if the current level b is less that a minimum level b min, the minimum fetch interval I(b) equals zero; if the current level b is greater than or equal to a maximum level, b max, the minimum fetch interval I(b) equals the duration D of each encoded ABR chunk; and otherwise, the minimum fetch interval is defined as a function: D * b − b min / b max − b min, wherein the function linearly interpolates the minimum fetch interval I(b) from zero to the duration D as the level b increases from the minimum level b min to the maximum level, b max.