Round refresh rate instead of truncating

Fixes #1441.
diff --git a/src/cocoa_monitor.m b/src/cocoa_monitor.m
index 955d52d..5767d24 100644
--- a/src/cocoa_monitor.m
+++ b/src/cocoa_monitor.m
@@ -29,6 +29,7 @@
 
 #include <stdlib.h>
 #include <limits.h>
+#include <math.h>
 
 #include <IOKit/graphics/IOGraphicsLib.h>
 #include <CoreVideo/CVBase.h>
@@ -148,7 +149,7 @@
     GLFWvidmode result;
     result.width = (int) CGDisplayModeGetWidth(mode);
     result.height = (int) CGDisplayModeGetHeight(mode);
-    result.refreshRate = (int) CGDisplayModeGetRefreshRate(mode);
+    result.refreshRate = (int) round(CGDisplayModeGetRefreshRate(mode));
 
     if (result.refreshRate == 0)
     {
diff --git a/src/wl_monitor.c b/src/wl_monitor.c
index 588f8b0..2b50b51 100644
--- a/src/wl_monitor.c
+++ b/src/wl_monitor.c
@@ -30,6 +30,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
+#include <math.h>
 
 
 static void outputHandleGeometry(void* data,
@@ -70,7 +71,7 @@
     mode.redBits = 8;
     mode.greenBits = 8;
     mode.blueBits = 8;
-    mode.refreshRate = refresh / 1000;
+    mode.refreshRate = (int) round(refresh / 1000.0);
 
     monitor->modeCount++;
     monitor->modes =
diff --git a/src/x11_monitor.c b/src/x11_monitor.c
index df53041..240e9fb 100644
--- a/src/x11_monitor.c
+++ b/src/x11_monitor.c
@@ -30,6 +30,7 @@
 #include <limits.h>
 #include <stdlib.h>
 #include <string.h>
+#include <math.h>
 
 
 // Check whether the display mode should be included in enumeration
@@ -44,7 +45,7 @@
 static int calculateRefreshRate(const XRRModeInfo* mi)
 {
     if (mi->hTotal && mi->vTotal)
-        return (int) ((double) mi->dotClock / ((double) mi->hTotal * (double) mi->vTotal));
+        return (int) round((double) mi->dotClock / ((double) mi->hTotal * (double) mi->vTotal));
     else
         return 0;
 }