Definately a bug in the code - the same that was in earlier versions.
In ShippingByWeightAndCountryComputationMethod.cs
Look at lines 108 to 116 - extract of the code below.
Line 108 - Gets all shipping methods for the country
THEN line 114 gets the rates based on cart weight etc - this returns zero as a default! If the cart is outside of the weight range for the option it will return zero (free shipping option!)
THEN Line 115 adds this option (with its rate even if it is zero) to the options.
var shippingMethods = ShippingMethodManager.GetAllShippingMethods(ShipmentPackage.ShippingAddress.CountryID);
foreach (var shippingMethod in shippingMethods)
{
var shippingOption = new ShippingOption();
shippingOption.Name = shippingMethod.Name;
shippingOption.Description = shippingMethod.Description;
shippingOption.Rate = GetRate(subTotal, weight, shippingMethod.ShippingMethodID, ShipmentPackage.ShippingAddress.Country.CountryID);
shippingOptions.Add(shippingOption);
}
It needs an IF conditional statement before line 115 - shippingOptions.Add(shippingOption) - to only add the option if not zero.