diff --git a/sys/net/crosslayer/ng_netif/ng_netif.c b/sys/net/crosslayer/ng_netif/ng_netif.c
index 29fef6ba37c14c77523ca7a8abd93862de62ea7d..fe70a0381e90642b492c4c1cf2a2dd4ff8cf0397 100644
--- a/sys/net/crosslayer/ng_netif/ng_netif.c
+++ b/sys/net/crosslayer/ng_netif/ng_netif.c
@@ -60,7 +60,9 @@ int ng_netif_add(kernel_pid_t pid)
 
 void ng_netif_remove(kernel_pid_t pid)
 {
-    for (int i = 0; i < NG_NETIF_NUMOF; i++) {
+    int i;
+
+    for (i = 0; i < NG_NETIF_NUMOF; i++) {
         if (ifs[i] == pid) {
             ifs[i] = KERNEL_PID_UNDEF;
 
@@ -68,10 +70,15 @@ void ng_netif_remove(kernel_pid_t pid)
                 if_handler[j].remove(pid);
             }
 
-            return;
+            break;
         }
     }
 
+    for (; (i < (NG_NETIF_NUMOF - 1)) && (ifs[i + 1] != KERNEL_PID_UNDEF); i++) {
+        ifs[i] = ifs[i + 1];
+    }
+
+    ifs[i] = KERNEL_PID_UNDEF;  /* set in case of i == (NG_NETIF_NUMOF - 1) */
 }
 
 kernel_pid_t *ng_netif_get(size_t *size)
diff --git a/tests/unittests/tests-netif/Makefile.include b/tests/unittests/tests-netif/Makefile.include
index 6ec6bb6788840b05aae44861bc574fcf80cfa308..17cf941c82eb4b2c7ea9740886cd36282bc888c7 100644
--- a/tests/unittests/tests-netif/Makefile.include
+++ b/tests/unittests/tests-netif/Makefile.include
@@ -1 +1,3 @@
 USEMODULE += ng_netif
+
+CFLAGS += -DNG_NETIF_NUMOF=3
diff --git a/tests/unittests/tests-netif/tests-netif.c b/tests/unittests/tests-netif/tests-netif.c
index 6c11b549d76fb3d658ea0d2b9efc24ab0be31067..1e35edfe04839ec6d0f2f9437aa3844f52cc354a 100644
--- a/tests/unittests/tests-netif/tests-netif.c
+++ b/tests/unittests/tests-netif/tests-netif.c
@@ -118,6 +118,32 @@ static void test_ng_netif_get__empty(void)
     TEST_ASSERT_EQUAL_INT(0, size);
 }
 
+/* takes one out of the middle of the netif list and checks if all interfaces
+ * are gotten regardless */
+static void test_ng_netif_get__success_3_minus_one(void)
+{
+    size_t size = TEST_UINT8;
+    kernel_pid_t *ifs;
+    int count = 0;
+
+    for (int i = 0; i < 3; i++) {
+        TEST_ASSERT_EQUAL_INT(0, ng_netif_add(TEST_UINT8 + i));
+    }
+
+    ng_netif_remove(TEST_UINT8 + 1);
+
+    ifs = ng_netif_get(&size);
+    TEST_ASSERT_EQUAL_INT(2, size);
+
+    for (size_t i = 0; i < size; i++) {
+        if ((ifs[i] == TEST_UINT8) || ifs[i] == (TEST_UINT8 + 2)) {
+            count++;
+        }
+    }
+
+    TEST_ASSERT_EQUAL_INT(size, count);
+}
+
 static void test_ng_netif_get__full(void)
 {
     size_t size = TEST_UINT8;
@@ -126,7 +152,7 @@ static void test_ng_netif_get__full(void)
         TEST_ASSERT_EQUAL_INT(0, ng_netif_add(TEST_UINT8 + i));
     }
 
-    ng_netif_get(&size);
+    TEST_ASSERT_NOT_NULL(ng_netif_get(&size));
     TEST_ASSERT_EQUAL_INT(NG_NETIF_NUMOF, size);
 }
 
@@ -141,6 +167,7 @@ Test *tests_netif_tests(void)
         new_TestFixture(test_ng_netif_remove__not_an_if),
         new_TestFixture(test_ng_netif_remove__success),
         new_TestFixture(test_ng_netif_get__empty),
+        new_TestFixture(test_ng_netif_get__success_3_minus_one),
         new_TestFixture(test_ng_netif_get__full),
     };