diff --git a/res/res_timing_kqueue.c b/res/res_timing_kqueue.c
index dd2a8397c8032d5f52c387359fd4a1b991233b2e..f568144aa5e805e88c7af5d3667c7e5a3bc3e39f 100644
--- a/res/res_timing_kqueue.c
+++ b/res/res_timing_kqueue.c
@@ -159,7 +159,9 @@ static void timer_destroy(void *obj)
 	struct kqueue_timer *timer = obj;
 	ast_debug(5, "[%d]: Timer Destroy\n", timer->handle);
 	kqueue_timer_fini_continuous_event(timer);
-	close(timer->handle);
+	if (timer->handle > -1) {
+		close(timer->handle);
+	}
 }
 
 static void *kqueue_timer_open(void)
diff --git a/res/res_timing_timerfd.c b/res/res_timing_timerfd.c
index 5ee21fcc0402475dda2939b3d774674aa50a7629..71f74bb03f4e09ee71fc838f2ab56b27e2b6850d 100644
--- a/res/res_timing_timerfd.c
+++ b/res/res_timing_timerfd.c
@@ -76,8 +76,9 @@ struct timerfd_timer {
 static void timer_destroy(void *obj)
 {
 	struct timerfd_timer *timer = obj;
-
-	close(timer->fd);
+	if (timer->fd > -1) {
+		close(timer->fd);
+	}
 }
 
 static void *timerfd_timer_open(void)