diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index 59fcdff..dbffa6c 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -51,7 +51,7 @@
 include(GrTest)
 
 set(GR_TEST_TARGET_DEPS gr-gsm)
-set(GR_TEST_PYTHON_DIRS ${CMAKE_BINARY_DIR}/swig)
+set(GR_TEST_PYTHON_DIRS ${CMAKE_BINARY_DIR}/swig:${CMAKE_BINARY_DIR}/python/misc_utils)
 GR_ADD_TEST(qa_decryption ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_decryption.py)
 GR_ADD_TEST(qa_burst_printer ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_burst_printer.py)
 GR_ADD_TEST(qa_message_printer ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_message_printer.py)
@@ -61,7 +61,7 @@
 GR_ADD_TEST(qa_burst_sdcch_subslot_filter ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_burst_sdcch_subslot_filter.py)
 GR_ADD_TEST(qa_burst_fnr_filter ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_burst_fnr_filter.py)
 GR_ADD_TEST(qa_dummy_burst_filter ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_dummy_burst_filter.py)
-#GR_ADD_TEST(qa_arfcn ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_arfcn.py)
+GR_ADD_TEST(qa_arfcn ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_arfcn.py)
 #GR_ADD_TEST(qa_msg_to_tag ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_msg_to_tag.py)
 #GR_ADD_TEST(qa_controlled_fractional_resampler_cc ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_controlled_fractional_resampler_cc.py)
 #GR_ADD_TEST(qa_uplink_downlink_splitter ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/qa_uplink_downlink_splitter.py)
diff --git a/python/misc_utils/arfcn.py b/python/misc_utils/arfcn.py
index e7edfb5..8836501 100644
--- a/python/misc_utils/arfcn.py
+++ b/python/misc_utils/arfcn.py
@@ -23,19 +23,19 @@
 
 import collections
 
-
-# first uplink freq, first arfcn, last arfcn, downlink frequence distance
+# first uplink freq, distance between uplink/downlink frequency, list of range tuple
+# each tuple in a range tuple contains: first arfcn of the range, last arfcn of the range, offset of the range
 # entries are ordered by relevance
 __band_conf = collections.OrderedDict([
-    ('P-GSM', {'first_freq': 890.2e6, 'first_arfcn': 1, 'last_arfcn': 124, 'downlink_dist': 45e6}),
-    ('DCS1800', {'first_freq': 1710.2e6, 'first_arfcn': 512, 'last_arfcn': 885, 'downlink_dist': 95e6}),
-    ('PCS1900', {'first_freq': 1850.2e6, 'first_arfcn': 512, 'last_arfcn': 810, 'downlink_dist': 80e6}),
-    ('E-GSM', {'first_freq': 880.2e6, 'first_arfcn': 975, 'last_arfcn': 1023, 'downlink_dist': 45e6}),           
-    ('R-GSM', {'first_freq': 876.2e6, 'first_arfcn': 955, 'last_arfcn': 1023, 'downlink_dist': 45e6}),
-    ('GSM450',{'first_freq': 450.6e6, 'first_arfcn': 259, 'last_arfcn': 293, 'downlink_dist': 10e6}),
-    ('GSM480', {'first_freq': 479e6, 'first_arfcn': 306, 'last_arfcn': 340, 'downlink_dist': 10e6}),
-    ('GSM850', {'first_freq': 824.2e6, 'first_arfcn': 128, 'last_arfcn': 251, 'downlink_dist': 45e6})
-    ])
+    ('P-GSM', {'f_start': 890.0e6, 'distance': 45e6, 'ranges': [(1, 124, 0)]}),
+    ('DCS1800', {'f_start': 1710.2e6, 'distance': 95e6, 'ranges': [(512, 885, 512)]}),
+    ('PCS1900', {'f_start': 1850.2e6, 'distance': 80e6, 'ranges': [(512, 810, 512)]}),
+    ('E-GSM', {'f_start': 890.0e6, 'distance': 45e6, 'ranges': [(0, 124, 0), (975, 1023, 1024)]}),
+    ('R-GSM', {'f_start': 890.0e6, 'distance': 45e6, 'ranges': [(0, 124, 0), (955, 1023, 1024)]}),
+    ('GSM450', {'f_start': 450.6e6, 'distance': 10e6, 'ranges': [(259, 293, 259)]}),
+    ('GSM480', {'f_start': 479e6, 'distance': 10e6, 'ranges': [(306, 340, 306)]}),
+    ('GSM850', {'f_start': 824.2e6, 'distance': 45e6, 'ranges': [(128, 251, 128)]}),
+])
 
 __chan_spacing = 2e5
 
@@ -44,34 +44,17 @@
     return __band_conf.keys()
 
 
-def get_first_arfcn(band):
-    """
-    Returns the first arfcn (i.e. the one with the lowest number) in the given band.
-    """
-    if band in __band_conf:
-        conf = __band_conf.get(band)
-        return conf['first_arfcn']
-
-
-def get_last_arfcn(band):
-    """
-    Returns the last arfcn (i.e. the one with the highest number) in the given band
-    """
-    if band in __band_conf:
-        conf = __band_conf.get(band)
-        return conf['last_arfcn']
-    
-    
 def is_valid_arfcn(arfcn, band):
     """
     Returns True if arfcn is valid in the given band, else False
     """
     if band in __band_conf:
         conf = __band_conf.get(band)
-        first_arfcn = conf['first_arfcn']
-        last_arfcn = conf['last_arfcn']
-        if first_arfcn <= arfcn <= last_arfcn:
-            return True
+        for arfcn_range in conf['ranges']:
+            arfcn_start = arfcn_range[0]
+            arfcn_end = arfcn_range[1]
+            if arfcn_start <= arfcn <= arfcn_end:
+                return True
     return False
 
 
@@ -79,49 +62,63 @@
     """
     Returns True if the given frequency is a valid uplink frequency in the given band
     """
+    result = None
     if band in __band_conf:
         conf = __band_conf.get(band)
-        first_freq = arfcn2uplink(conf['first_arfcn'], band)
-        last_freq = arfcn2uplink(conf['last_arfcn'], band)
-    if first_freq is None or last_freq is None:
-        return False
-    if first_freq <= freq <= last_freq:
-        return True
-    return False
+        result = False
+        for arfcn_range in conf['ranges']:
+            arfcn_start = arfcn_range[0]
+            arfcn_end = arfcn_range[1]
+            first_freq = arfcn2uplink(arfcn_start, band)
+            last_freq = arfcn2uplink(arfcn_end, band)
+            if first_freq is None or last_freq is None:
+                result = False
+            elif first_freq <= freq <= last_freq:
+                result = True
+    return result
 
 
 def is_valid_downlink(freq, band):
     """
     Returns True if the given frequency is a valid downlink frequency in the given band
     """
+    result = None
     if band in __band_conf:
         conf = __band_conf.get(band)
-        first_freq = arfcn2downlink(conf['first_arfcn'], band)
-        last_freq = arfcn2downlink(conf['last_arfcn'], band)
-    if first_freq is None or last_freq is None:
-        return False
-    if first_freq <= freq <= last_freq:
-        return True
-    return False 
+        result = False
+        for arfcn_range in conf['ranges']:
+            arfcn_start = arfcn_range[0]
+            arfcn_end = arfcn_range[1]
+            first_freq = arfcn2downlink(arfcn_start, band)
+            last_freq = arfcn2downlink(arfcn_end, band)
+            if first_freq is None or last_freq is None:
+                result = False
+            elif first_freq <= freq <= last_freq:
+                result = True
+    return result
 
 
 def arfcn2uplink(arfcn, band):
     if band in __band_conf and is_valid_arfcn(arfcn, band):
-
         conf = __band_conf.get(band)
-        freq_start = conf['first_freq']
-        offset = conf['first_arfcn']
-        # if (band == 'E-GSM' or band == 'R-GSM') and arfcn > 124:
-        #     offset = 1024
-        f = freq_start + (__chan_spacing * (arfcn - offset))
-        return round(f, 1)
+        f_start = conf['f_start']
+        offset = None
+        for arfcn_range in conf['ranges']:
+            arfcn_start = arfcn_range[0]
+            arfcn_end = arfcn_range[1]
+            if arfcn_start <= arfcn <= arfcn_end:
+                offset = arfcn_range[2]
+
+        if offset is not None:
+            f = f_start + (__chan_spacing * (arfcn - offset))
+            return round(f, 1)
     return None
 
 
 def arfcn2downlink(arfcn, band):
     if band in __band_conf and is_valid_arfcn(arfcn, band):
         conf = __band_conf.get(band)
-        distance = conf['downlink_dist']
+        distance = conf['distance']
         return round(arfcn2uplink(arfcn, band) + distance, 1)
     return None
 
@@ -129,16 +126,35 @@
 def uplink2arfcn(freq, band):
     if band in __band_conf and is_valid_uplink(freq, band):
         conf = __band_conf.get(band)
-        freq_start = conf['first_freq']
-        offset = conf['first_arfcn']
-        return int(round(offset + ((freq - freq_start) / __chan_spacing), 0))
+        f_start = conf['f_start']
+        offset = None
+        for arfcn_range in conf['ranges']:
+            arfcn_start = arfcn_range[0]
+            arfcn_end = arfcn_range[1]
+            offset = arfcn_range[2]
+            arfcn = int(round(offset + ((freq - f_start) / __chan_spacing), 0))
+            if arfcn_start <= arfcn <= arfcn_end:
+                return arfcn
     return None
 
 
 def downlink2arfcn(freq, band):
     if band in __band_conf and is_valid_downlink(freq, band):
         conf = __band_conf.get(band)
-        distance = conf['downlink_dist']
+        distance = conf['distance']
         freq_uplink = freq - distance
         return int(round(uplink2arfcn(freq_uplink, band), 0))
     return None
+
+
+def get_arfcn_ranges(band):
+    """
+    Returns a list of arfcn tuples, each with first and last arfcn of the range.
+    """
+    result = []
+    if band in __band_conf:
+        conf = __band_conf.get(band)
+        for arfcn_range in conf['ranges']:
+            arfcn_tuple = (arfcn_range[0], arfcn_range[1])
+            result.append(arfcn_tuple)
+    return result
diff --git a/python/qa_arfcn.py b/python/qa_arfcn.py
index 3e8a5ee..358d436 100755
--- a/python/qa_arfcn.py
+++ b/python/qa_arfcn.py
@@ -28,261 +28,282 @@
 import sys
 
 
-class qa_arfcn (gr_unittest.TestCase):
-   
+class qa_arfcn(gr_unittest.TestCase):
     def test_001_is_valid_arfcn(self):
         self.assertTrue(arfcn.is_valid_arfcn(259, 'GSM450'))
         self.assertTrue(arfcn.is_valid_arfcn(277, 'GSM450'))
         self.assertTrue(arfcn.is_valid_arfcn(293, 'GSM450'))
         self.assertFalse(arfcn.is_valid_arfcn(258, 'GSM450'))
         self.assertFalse(arfcn.is_valid_arfcn(294, 'GSM450'))
-        
+
         self.assertTrue(arfcn.is_valid_arfcn(306, 'GSM480'))
         self.assertTrue(arfcn.is_valid_arfcn(323, 'GSM480'))
         self.assertTrue(arfcn.is_valid_arfcn(340, 'GSM480'))
         self.assertFalse(arfcn.is_valid_arfcn(305, 'GSM480'))
         self.assertFalse(arfcn.is_valid_arfcn(341, 'GSM480'))
-                
+
         self.assertTrue(arfcn.is_valid_arfcn(128, 'GSM850'))
         self.assertTrue(arfcn.is_valid_arfcn(199, 'GSM850'))
         self.assertTrue(arfcn.is_valid_arfcn(251, 'GSM850'))
         self.assertFalse(arfcn.is_valid_arfcn(127, 'GSM480'))
         self.assertFalse(arfcn.is_valid_arfcn(251, 'GSM480'))
-        
+
         self.assertTrue(arfcn.is_valid_arfcn(1, 'P-GSM'))
         self.assertTrue(arfcn.is_valid_arfcn(63, 'P-GSM'))
         self.assertTrue(arfcn.is_valid_arfcn(124, 'P-GSM'))
         self.assertFalse(arfcn.is_valid_arfcn(0, 'P-GSM'))
         self.assertFalse(arfcn.is_valid_arfcn(125, 'P-GSM'))
-        
+
+        self.assertTrue(arfcn.is_valid_arfcn(0, 'E-GSM'))
+        self.assertTrue(arfcn.is_valid_arfcn(1, 'E-GSM'))
+        self.assertTrue(arfcn.is_valid_arfcn(124, 'E-GSM'))
+        self.assertFalse(arfcn.is_valid_arfcn(125, 'E-GSM'))
+
         self.assertTrue(arfcn.is_valid_arfcn(975, 'E-GSM'))
         self.assertTrue(arfcn.is_valid_arfcn(999, 'E-GSM'))
         self.assertTrue(arfcn.is_valid_arfcn(1023, 'E-GSM'))
         self.assertFalse(arfcn.is_valid_arfcn(974, 'E-GSM'))
         self.assertFalse(arfcn.is_valid_arfcn(1024, 'E-GSM'))
-        
+
+        self.assertTrue(arfcn.is_valid_arfcn(0, 'R-GSM'))
+        self.assertTrue(arfcn.is_valid_arfcn(1, 'R-GSM'))
+        self.assertTrue(arfcn.is_valid_arfcn(124, 'R-GSM'))
+        self.assertFalse(arfcn.is_valid_arfcn(125, 'R-GSM'))
+
         self.assertTrue(arfcn.is_valid_arfcn(955, 'R-GSM'))
         self.assertTrue(arfcn.is_valid_arfcn(989, 'R-GSM'))
         self.assertTrue(arfcn.is_valid_arfcn(1023, 'R-GSM'))
         self.assertFalse(arfcn.is_valid_arfcn(954, 'R-GSM'))
         self.assertFalse(arfcn.is_valid_arfcn(1024, 'R-GSM'))
-        
+
         self.assertTrue(arfcn.is_valid_arfcn(512, 'DCS1800'))
         self.assertTrue(arfcn.is_valid_arfcn(732, 'DCS1800'))
         self.assertTrue(arfcn.is_valid_arfcn(885, 'DCS1800'))
         self.assertFalse(arfcn.is_valid_arfcn(511, 'DCS1800'))
         self.assertFalse(arfcn.is_valid_arfcn(886, 'DCS1800'))
-        
+
         self.assertTrue(arfcn.is_valid_arfcn(512, 'PCS1900'))
         self.assertTrue(arfcn.is_valid_arfcn(691, 'PCS1900'))
         self.assertTrue(arfcn.is_valid_arfcn(810, 'PCS1900'))
         self.assertFalse(arfcn.is_valid_arfcn(511, 'PCS1900'))
         self.assertFalse(arfcn.is_valid_arfcn(811, 'PCS1900'))
 
-
     def test_002_is_valid_uplink(self):
         self.assertTrue(arfcn.is_valid_uplink(450.6e6, 'GSM450'))
         self.assertTrue(arfcn.is_valid_uplink(457.4e6, 'GSM450'))
         self.assertFalse(arfcn.is_valid_uplink(450.4e6, 'GSM450'))
         self.assertFalse(arfcn.is_valid_uplink(457.6e6, 'GSM450'))
-        
+
         self.assertTrue(arfcn.is_valid_uplink(479e6, 'GSM480'))
         self.assertTrue(arfcn.is_valid_uplink(485.8e6, 'GSM480'))
         self.assertFalse(arfcn.is_valid_uplink(478.8e6, 'GSM480'))
         self.assertFalse(arfcn.is_valid_uplink(486e6, 'GSM480'))
-                
+
         self.assertTrue(arfcn.is_valid_uplink(824.2e6, 'GSM850'))
         self.assertTrue(arfcn.is_valid_uplink(848.8e6, 'GSM850'))
         self.assertFalse(arfcn.is_valid_uplink(824e6, 'GSM850'))
         self.assertFalse(arfcn.is_valid_uplink(849e6, 'GSM850'))
-        
+
         self.assertTrue(arfcn.is_valid_uplink(890.2e6, 'P-GSM'))
         self.assertTrue(arfcn.is_valid_uplink(914.8e6, 'P-GSM'))
         self.assertFalse(arfcn.is_valid_uplink(890e6, 'P-GSM'))
         self.assertFalse(arfcn.is_valid_uplink(915e6, 'P-GSM'))
-        
+
         self.assertTrue(arfcn.is_valid_uplink(880.2e6, 'E-GSM'))
         self.assertTrue(arfcn.is_valid_uplink(889.8e6, 'E-GSM'))
+        self.assertTrue(arfcn.is_valid_uplink(890.0e6, 'E-GSM'))
+        self.assertTrue(arfcn.is_valid_uplink(914.8e6, 'E-GSM'))
         self.assertFalse(arfcn.is_valid_uplink(880e6, 'E-GSM'))
-        self.assertFalse(arfcn.is_valid_uplink(890e6, 'E-GSM'))
-        
+        self.assertFalse(arfcn.is_valid_uplink(915e6, 'E-GSM'))
+
         self.assertTrue(arfcn.is_valid_uplink(876.2e6, 'R-GSM'))
         self.assertTrue(arfcn.is_valid_uplink(889.8e6, 'R-GSM'))
+        self.assertTrue(arfcn.is_valid_uplink(890.0e6, 'R-GSM'))
+        self.assertTrue(arfcn.is_valid_uplink(914.8e6, 'R-GSM'))
         self.assertFalse(arfcn.is_valid_uplink(876e6, 'R-GSM'))
-        self.assertFalse(arfcn.is_valid_uplink(890e6, 'R-GSM'))
-        
+        self.assertFalse(arfcn.is_valid_uplink(915e6, 'R-GSM'))
+
         self.assertTrue(arfcn.is_valid_uplink(1710.2e6, 'DCS1800'))
         self.assertTrue(arfcn.is_valid_uplink(1784.8e6, 'DCS1800'))
         self.assertFalse(arfcn.is_valid_uplink(1710e6, 'DCS1800'))
         self.assertFalse(arfcn.is_valid_uplink(1785e6, 'DCS1800'))
-        
+
         self.assertTrue(arfcn.is_valid_uplink(1850.2e6, 'PCS1900'))
         self.assertTrue(arfcn.is_valid_uplink(1909.8e6, 'PCS1900'))
         self.assertFalse(arfcn.is_valid_uplink(1850e6, 'PCS1900'))
         self.assertFalse(arfcn.is_valid_uplink(1910e6, 'PCS1900'))
 
-
     def test_003_is_valid_downlink(self):
         self.assertTrue(arfcn.is_valid_downlink(460.6e6, 'GSM450'))
         self.assertTrue(arfcn.is_valid_downlink(467.4e6, 'GSM450'))
         self.assertFalse(arfcn.is_valid_downlink(460.4e6, 'GSM450'))
         self.assertFalse(arfcn.is_valid_downlink(467.6e6, 'GSM450'))
-        
+
         self.assertTrue(arfcn.is_valid_downlink(489e6, 'GSM480'))
         self.assertTrue(arfcn.is_valid_downlink(495.8e6, 'GSM480'))
         self.assertFalse(arfcn.is_valid_downlink(488.8e6, 'GSM480'))
         self.assertFalse(arfcn.is_valid_downlink(496e6, 'GSM480'))
-                
+
         self.assertTrue(arfcn.is_valid_downlink(869.2e6, 'GSM850'))
         self.assertTrue(arfcn.is_valid_downlink(893.8e6, 'GSM850'))
         self.assertFalse(arfcn.is_valid_downlink(869e6, 'GSM850'))
         self.assertFalse(arfcn.is_valid_downlink(894e6, 'GSM850'))
-        
+
         self.assertTrue(arfcn.is_valid_downlink(935.2e6, 'P-GSM'))
         self.assertTrue(arfcn.is_valid_downlink(959.8e6, 'P-GSM'))
         self.assertFalse(arfcn.is_valid_downlink(935e6, 'P-GSM'))
         self.assertFalse(arfcn.is_valid_downlink(960e6, 'P-GSM'))
-        
+
         self.assertTrue(arfcn.is_valid_downlink(925.2e6, 'E-GSM'))
         self.assertTrue(arfcn.is_valid_downlink(934.8e6, 'E-GSM'))
+        self.assertTrue(arfcn.is_valid_downlink(935.0e6, 'E-GSM'))
+        self.assertTrue(arfcn.is_valid_downlink(959.8e6, 'E-GSM'))
         self.assertFalse(arfcn.is_valid_downlink(925e6, 'E-GSM'))
-        self.assertFalse(arfcn.is_valid_downlink(935e6, 'E-GSM'))
-        
+        self.assertFalse(arfcn.is_valid_downlink(960e6, 'E-GSM'))
+
         self.assertTrue(arfcn.is_valid_downlink(921.2e6, 'R-GSM'))
         self.assertTrue(arfcn.is_valid_downlink(934.8e6, 'R-GSM'))
+        self.assertTrue(arfcn.is_valid_downlink(935.0e6, 'R-GSM'))
+        self.assertTrue(arfcn.is_valid_downlink(959.8e6, 'R-GSM'))
         self.assertFalse(arfcn.is_valid_downlink(921e6, 'R-GSM'))
-        self.assertFalse(arfcn.is_valid_downlink(935e6, 'R-GSM'))
-        
+        self.assertFalse(arfcn.is_valid_downlink(960e6, 'R-GSM'))
+
         self.assertTrue(arfcn.is_valid_downlink(1805.2e6, 'DCS1800'))
         self.assertTrue(arfcn.is_valid_downlink(1879.8e6, 'DCS1800'))
         self.assertFalse(arfcn.is_valid_downlink(1805e6, 'DCS1800'))
         self.assertFalse(arfcn.is_valid_downlink(1880e6, 'DCS1800'))
-        
+
         self.assertTrue(arfcn.is_valid_downlink(1930.2e6, 'PCS1900'))
         self.assertTrue(arfcn.is_valid_downlink(1989.8e6, 'PCS1900'))
         self.assertFalse(arfcn.is_valid_downlink(1930e6, 'PCS1900'))
         self.assertFalse(arfcn.is_valid_downlink(1990e6, 'PCS1900'))
-        
+
     def test_004_arfcn2uplink(self):
         self.assertEqual(450.6e6, arfcn.arfcn2uplink(259, 'GSM450'))
         self.assertEqual(457.4e6, arfcn.arfcn2uplink(293, 'GSM450'))
-        
+
         self.assertEqual(479e6, arfcn.arfcn2uplink(306, 'GSM480'))
         self.assertEqual(485.8e6, arfcn.arfcn2uplink(340, 'GSM480'))
-        
+
         self.assertEqual(824.2e6, arfcn.arfcn2uplink(128, 'GSM850'))
         self.assertEqual(848.8e6, arfcn.arfcn2uplink(251, 'GSM850'))
-        
+
         self.assertEqual(890.2e6, arfcn.arfcn2uplink(1, 'P-GSM'))
         self.assertEqual(914.8e6, arfcn.arfcn2uplink(124, 'P-GSM'))
-        
+
+        self.assertEqual(890.0e6, arfcn.arfcn2uplink(0, 'E-GSM'))
+        self.assertEqual(914.8e6, arfcn.arfcn2uplink(124, 'E-GSM'))
         self.assertEqual(880.2e6, arfcn.arfcn2uplink(975, 'E-GSM'))
         self.assertEqual(889.8e6, arfcn.arfcn2uplink(1023, 'E-GSM'))
-        
+
+        self.assertEqual(890.0e6, arfcn.arfcn2uplink(0, 'R-GSM'))
+        self.assertEqual(914.8e6, arfcn.arfcn2uplink(124, 'R-GSM'))
         self.assertEqual(876.2e6, arfcn.arfcn2uplink(955, 'R-GSM'))
         self.assertEqual(889.8e6, arfcn.arfcn2uplink(1023, 'R-GSM'))
-        
+
         self.assertEqual(1710.2e6, arfcn.arfcn2uplink(512, 'DCS1800'))
         self.assertEqual(1784.8e6, arfcn.arfcn2uplink(885, 'DCS1800'))
-        
+
         self.assertEqual(1850.2e6, arfcn.arfcn2uplink(512, 'PCS1900'))
         self.assertEqual(1909.8e6, arfcn.arfcn2uplink(810, 'PCS1900'))
-        
+
     def test_005_arfcn2downlink(self):
         self.assertEqual(460.6e6, arfcn.arfcn2downlink(259, 'GSM450'))
         self.assertEqual(467.4e6, arfcn.arfcn2downlink(293, 'GSM450'))
-        
+
         self.assertEqual(489e6, arfcn.arfcn2downlink(306, 'GSM480'))
         self.assertEqual(495.8e6, arfcn.arfcn2downlink(340, 'GSM480'))
-        
+
         self.assertEqual(869.2e6, arfcn.arfcn2downlink(128, 'GSM850'))
         self.assertEqual(893.8e6, arfcn.arfcn2downlink(251, 'GSM850'))
-        
+
         self.assertEqual(935.2e6, arfcn.arfcn2downlink(1, 'P-GSM'))
         self.assertEqual(959.8e6, arfcn.arfcn2downlink(124, 'P-GSM'))
-        
+
+        self.assertEqual(935.0e6, arfcn.arfcn2downlink(0, 'E-GSM'))
+        self.assertEqual(959.8e6, arfcn.arfcn2downlink(124, 'E-GSM'))
         self.assertEqual(925.2e6, arfcn.arfcn2downlink(975, 'E-GSM'))
         self.assertEqual(934.8e6, arfcn.arfcn2downlink(1023, 'E-GSM'))
-        
+
+        self.assertEqual(935.0e6, arfcn.arfcn2downlink(0, 'R-GSM'))
+        self.assertEqual(959.8e6, arfcn.arfcn2downlink(124, 'R-GSM'))
         self.assertEqual(921.2e6, arfcn.arfcn2downlink(955, 'R-GSM'))
         self.assertEqual(934.8e6, arfcn.arfcn2downlink(1023, 'R-GSM'))
-        
+
         self.assertEqual(1805.2e6, arfcn.arfcn2downlink(512, 'DCS1800'))
         self.assertEqual(1879.8e6, arfcn.arfcn2downlink(885, 'DCS1800'))
-        
+
         self.assertEqual(1930.2e6, arfcn.arfcn2downlink(512, 'PCS1900'))
         self.assertEqual(1989.8e6, arfcn.arfcn2downlink(810, 'PCS1900'))
-        
+
     def test_006_uplink2arfcn(self):
         self.assertEqual(259, arfcn.uplink2arfcn(450.6e6, 'GSM450'))
         self.assertEqual(293, arfcn.uplink2arfcn(457.4e6, 'GSM450'))
-        
+
         self.assertEqual(306, arfcn.uplink2arfcn(479e6, 'GSM480'))
         self.assertEqual(340, arfcn.uplink2arfcn(485.8e6, 'GSM480'))
-        
+
         self.assertEqual(128, arfcn.uplink2arfcn(824.2e6, 'GSM850'))
         self.assertEqual(251, arfcn.uplink2arfcn(848.8e6, 'GSM850'))
-        
+
         self.assertEqual(1, arfcn.uplink2arfcn(890.2e6, 'P-GSM'))
         self.assertEqual(124, arfcn.uplink2arfcn(914.8e6, 'P-GSM'))
-        
+
+        self.assertEqual(0, arfcn.uplink2arfcn(890.0e6, 'E-GSM'))
+        self.assertEqual(124, arfcn.uplink2arfcn(914.8e6, 'E-GSM'))
         self.assertEqual(975, arfcn.uplink2arfcn(880.2e6, 'E-GSM'))
         self.assertEqual(1023, arfcn.uplink2arfcn(889.8e6, 'E-GSM'))
-        
+
+        self.assertEqual(0, arfcn.uplink2arfcn(890.0e6, 'R-GSM'))
+        self.assertEqual(124, arfcn.uplink2arfcn(914.8e6, 'R-GSM'))
         self.assertEqual(955, arfcn.uplink2arfcn(876.2e6, 'R-GSM'))
         self.assertEqual(1023, arfcn.uplink2arfcn(889.8e6, 'R-GSM'))
-        
+
         self.assertEqual(512, arfcn.uplink2arfcn(1710.2e6, 'DCS1800'))
         self.assertEqual(885, arfcn.uplink2arfcn(1784.8e6, 'DCS1800'))
-        
+
         self.assertEqual(512, arfcn.uplink2arfcn(1850.2e6, 'PCS1900'))
         self.assertEqual(810, arfcn.uplink2arfcn(1909.8e6, 'PCS1900'))
-        
+
     def test_007_downlink2arfcn(self):
         self.assertEqual(259, arfcn.downlink2arfcn(460.6e6, 'GSM450'))
         self.assertEqual(293, arfcn.downlink2arfcn(467.4e6, 'GSM450'))
-        
+
         self.assertEqual(306, arfcn.downlink2arfcn(489e6, 'GSM480'))
         self.assertEqual(340, arfcn.downlink2arfcn(495.8e6, 'GSM480'))
-        
+
         self.assertEqual(128, arfcn.downlink2arfcn(869.2e6, 'GSM850'))
         self.assertEqual(251, arfcn.downlink2arfcn(893.8e6, 'GSM850'))
-        
+
         self.assertEqual(1, arfcn.downlink2arfcn(935.2e6, 'P-GSM'))
         self.assertEqual(124, arfcn.downlink2arfcn(959.8e6, 'P-GSM'))
-        
+
+        self.assertEqual(0, arfcn.downlink2arfcn(935.0e6, 'E-GSM'))
+        self.assertEqual(124, arfcn.downlink2arfcn(959.8e6, 'E-GSM'))
         self.assertEqual(975, arfcn.downlink2arfcn(925.2e6, 'E-GSM'))
         self.assertEqual(1023, arfcn.downlink2arfcn(934.8e6, 'E-GSM'))
-        
+
+        self.assertEqual(0, arfcn.downlink2arfcn(935.0e6, 'R-GSM'))
+        self.assertEqual(124, arfcn.downlink2arfcn(959.8e6, 'R-GSM'))
         self.assertEqual(955, arfcn.downlink2arfcn(921.2e6, 'R-GSM'))
         self.assertEqual(1023, arfcn.downlink2arfcn(934.8e6, 'R-GSM'))
-        
+
         self.assertEqual(512, arfcn.downlink2arfcn(1805.2e6, 'DCS1800'))
         self.assertEqual(885, arfcn.downlink2arfcn(1879.8e6, 'DCS1800'))
-        
+
         self.assertEqual(512, arfcn.downlink2arfcn(1930.2e6, 'PCS1900'))
         self.assertEqual(810, arfcn.downlink2arfcn(1989.8e6, 'PCS1900'))
-        
-    def test_008_firstarfcn(self):
-        self.assertEqual(259, arfcn.get_first_arfcn('GSM450'))
-        self.assertEqual(306, arfcn.get_first_arfcn('GSM480'))
-        self.assertEqual(128, arfcn.get_first_arfcn('GSM850'))
-        self.assertEqual(1, arfcn.get_first_arfcn('P-GSM'))
-        self.assertEqual(975, arfcn.get_first_arfcn('E-GSM'))
-        self.assertEqual(955, arfcn.get_first_arfcn('R-GSM'))
-        self.assertEqual(512, arfcn.get_first_arfcn('DCS1800'))
-        self.assertEqual(512, arfcn.get_first_arfcn('PCS1900'))
 
-    def test_009_firstarfcn(self):
-        self.assertEqual(293, arfcn.get_last_arfcn('GSM450'))
-        self.assertEqual(340, arfcn.get_last_arfcn('GSM480'))
-        self.assertEqual(251, arfcn.get_last_arfcn('GSM850'))
-        self.assertEqual(124, arfcn.get_last_arfcn('P-GSM'))
-        self.assertEqual(1023, arfcn.get_last_arfcn('E-GSM'))
-        self.assertEqual(1023, arfcn.get_last_arfcn('R-GSM'))
-        self.assertEqual(885, arfcn.get_last_arfcn('DCS1800'))
-        self.assertEqual(810, arfcn.get_last_arfcn('PCS1900'))        
-        
+    def test_008_get_arfcn_ranges(self):
+        self.assertEqual(1, len(arfcn.get_arfcn_ranges('GSM450')))
+        self.assertEqual(1, len(arfcn.get_arfcn_ranges('GSM480')))
+        self.assertEqual(1, len(arfcn.get_arfcn_ranges('GSM850')))
+        self.assertEqual(1, len(arfcn.get_arfcn_ranges('P-GSM')))
+        self.assertEqual(2, len(arfcn.get_arfcn_ranges('E-GSM')))
+        self.assertEqual(2, len(arfcn.get_arfcn_ranges('R-GSM')))
+        self.assertEqual(1, len(arfcn.get_arfcn_ranges('DCS1800')))
+        self.assertEqual(1, len(arfcn.get_arfcn_ranges('PCS1900')))
+
+
 if __name__ == '__main__':
     gr_unittest.run(qa_arfcn, "qa_arfcn.xml")
- 
