From 067cc1a74a653abfe043462753ac503d0211c177 Mon Sep 17 00:00:00 2001
From: Nicolas Dandrimont <nicolas.dandrimont@crans.org>
Date: Sun, 3 Nov 2013 01:13:23 +0100
Subject: [PATCH] Fix rounding error in clipper.cpp

This fixes half of #1486 (test failure in t/geometry.t)
---
 xs/src/clipper.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/xs/src/clipper.cpp b/xs/src/clipper.cpp
index 7f4ceceb6..e639b7b1b 100755
--- a/xs/src/clipper.cpp
+++ b/xs/src/clipper.cpp
@@ -3335,11 +3335,11 @@ void DoSquare(double mul)
       a1 = std::fabs(a2 - a1);
       if (a1 > pi) a1 = pi * 2 - a1;
       double dx = std::tan((pi - a1) / 4) * std::fabs(m_delta * mul);
-      pt1 = IntPoint((long64)(pt1.X -normals[m_k].Y * dx),
-        (long64)(pt1.Y + normals[m_k].X * dx));
+      pt1 = IntPoint((long64)Round(pt1.X -normals[m_k].Y * dx),
+        (long64)Round(pt1.Y + normals[m_k].X * dx));
       AddPoint(pt1);
-      pt2 = IntPoint((long64)(pt2.X + normals[m_j].Y * dx),
-        (long64)(pt2.Y -normals[m_j].X * dx));
+      pt2 = IntPoint((long64)Round(pt2.X + normals[m_j].Y * dx),
+        (long64)Round(pt2.Y -normals[m_j].X * dx));
       AddPoint(pt2);
     }
     else