diff --git a/changes.txt b/changes.txt
--- a/changes.txt
+++ b/changes.txt
@@ -1,3 +1,9 @@
+0.3.0.0
+-------
+
+- fixes "returns a singleton list if start and end are the same" bug.
+- Released Sun 10 Nov 2019 15:31:24 CET.
+
 0.2.0.0
 -------
 
diff --git a/line-drawing.cabal b/line-drawing.cabal
--- a/line-drawing.cabal
+++ b/line-drawing.cabal
@@ -1,6 +1,6 @@
 cabal-version:       >=1.10
 name:                line-drawing
-version:             0.2.0.0
+version:             0.3.0.0
 synopsis:            raster line drawing
 description:         Line drawing algorithms to approximate a
                      line segment on discrete graphical media (raster).
diff --git a/src/Line/Draw.hs b/src/Line/Draw.hs
--- a/src/Line/Draw.hs
+++ b/src/Line/Draw.hs
@@ -33,6 +33,7 @@
 -- <https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm Bresenham's algorithm>.
 bresenham :: Integral a => (a, a) -> (a, a) -> [(a, a)]
 bresenham x@(x1, y1) y@(x2, y2)
+            | x == y    = [x]
             | m1Check   = bresenhamBase x y
             | otherwise = let x' = T.swap x
                               y' = T.swap y
diff --git a/test/Line/DrawSpec.hs b/test/Line/DrawSpec.hs
--- a/test/Line/DrawSpec.hs
+++ b/test/Line/DrawSpec.hs
@@ -33,4 +33,7 @@
     it "rasterises a line, quadrant 4, m>1" $
       bresenham (0 :: Int, 0) (2, -4) `shouldBe`
         [(0,0), (0,-1), (1,-2), (1,-3), (2,-4)]
+    it "returns a singleton list if start and end are the same" $
+      bresenham (2 :: Int, 2) (2, 2) `shouldBe`
+        [(2,2)]
 
