def assign_region(vheight, region_hmax={"D":115.0,"E":150.0,"F":900.0},
                  region_hmin={"D":75.0,"E":115.0,"F":150.0}, case="upper"):
    """Assign an ionospheric region based on virtual height.
    "D" (75 - 115 km)
    "E" (115 - 200 km) is detected at distances lass than 900 km
    "F" (200 -900 km) is detected at all distances
    "" if values fall outside of specified altitudes
    Parameters
    -------------
    vheight : (float)
        Virtual height of peak of propagation path
    region_hmax : (dict)
        Maximum virtual heights allowed in each ionospheric layer.
        (default={"D":115.0,"E":150.0,"F":400.0})
    region_hmin : (dict)
        Minimum virtual heights allowed in each ionospheric layer.
        (default={"D":75.0,"E":115.0,"F":150.0})
    case : (str)
        Provide the output in uppercase or lowercase (default=upper)
    Returns
    -----------
    region : (str)
        one (or zero) character string denoting region
    """
    region = ""
    rpad = {"D":0.0, "E":0.0, "F":1.0}

    for rr in region_hmax.keys():
        if region_hmin[rr] <= vheight and vheight < region_hmax[rr] + rpad[rr]:
            region = rr.lower() if case == "lower" else rr

    return region