diff --git a/Source/Charts/Renderers/BarChartRenderer.swift b/Source/Charts/Renderers/BarChartRenderer.swift
index eb2eebe819..e49ff396f2 100644
--- a/Source/Charts/Renderers/BarChartRenderer.swift
+++ b/Source/Charts/Renderers/BarChartRenderer.swift
@@ -352,7 +352,13 @@ open class BarChartRenderer: BarLineScatterCandleBubbleRenderer
 
                 context.setFillColor(dataSet.barShadowColor.cgColor)
                 
-                let bezierPath = UIBezierPath(roundedRect: barRect, byRoundingCorners: dataSet.roundedCorners,
+                var roundedCorners = dataSet.roundedCorners
+                if let i = buffer.firstIndex(of: barRect),
+                   let entry = dataSet.entryForIndex(i),
+                   entry.y < 0 {
+                    roundedCorners.update(with: [.bottomLeft, .bottomRight, .topLeft, .topRight])
+                }
+                let bezierPath = UIBezierPath(roundedRect: barRect, byRoundingCorners: roundedCorners,
                                               cornerRadii: .init(width: dataSet.cornerRadius, height: dataSet.cornerRadius))
                 context.addPath(bezierPath.cgPath)
                 context.drawPath(using: .fill)
@@ -383,7 +389,12 @@ open class BarChartRenderer: BarLineScatterCandleBubbleRenderer
                 context.setFillColor(dataSet.color(atIndex: j).cgColor)
             }
             
-            let bezierPath = UIBezierPath(roundedRect: barRect, byRoundingCorners: dataSet.roundedCorners,
+            var roundedCorners = dataSet.roundedCorners
+            if let entry = dataSet.entryForIndex(j),
+               entry.y < 0 {
+                roundedCorners.update(with: [.bottomLeft, .bottomRight, .topLeft, .topRight])
+            }
+            let bezierPath = UIBezierPath(roundedRect: barRect, byRoundingCorners: roundedCorners,
                                           cornerRadii: .init(width: dataSet.cornerRadius, height: dataSet.cornerRadius))
             context.addPath(bezierPath.cgPath)
             context.drawPath(using: .fill)
@@ -751,7 +762,11 @@ open class BarChartRenderer: BarLineScatterCandleBubbleRenderer
                 
                 setHighlightDrawPos(highlight: high, barRect: barRect)
                 
-                let bezierPath = UIBezierPath(roundedRect: barRect, byRoundingCorners: set.roundedCorners,
+                var roundedCorners = set.roundedCorners
+                if e.y < 0 {
+                    roundedCorners.update(with: [.bottomLeft, .bottomRight, .topLeft, .topRight])
+                }
+                let bezierPath = UIBezierPath(roundedRect: barRect, byRoundingCorners: roundedCorners,
                                               cornerRadii: .init(width: set.cornerRadius, height: set.cornerRadius))
                 context.addPath(bezierPath.cgPath)
                 context.drawPath(using: .fill)
diff --git a/Source/Charts/Renderers/HorizontalBarChartRenderer.swift b/Source/Charts/Renderers/HorizontalBarChartRenderer.swift
index 588f45bc95..9fd9fbc284 100644
--- a/Source/Charts/Renderers/HorizontalBarChartRenderer.swift
+++ b/Source/Charts/Renderers/HorizontalBarChartRenderer.swift
@@ -229,7 +229,11 @@ open class HorizontalBarChartRenderer: BarChartRenderer
                 
                 context.setFillColor(dataSet.barShadowColor.cgColor)
                 
-                let bezierPath = UIBezierPath(roundedRect: _barShadowRectBuffer, byRoundingCorners: dataSet.roundedCorners,
+                var roundedCorners = dataSet.roundedCorners
+                if _barShadowRectBuffer.minX < 0 {
+                    roundedCorners.update(with: [.bottomLeft, .bottomRight, .topLeft, .topRight])
+                }
+                let bezierPath = UIBezierPath(roundedRect: _barShadowRectBuffer, byRoundingCorners: roundedCorners,
                                               cornerRadii: .init(width: dataSet.cornerRadius, height: dataSet.cornerRadius))
                 context.addPath(bezierPath.cgPath)
                 context.drawPath(using: .fill)
@@ -269,7 +273,11 @@ open class HorizontalBarChartRenderer: BarChartRenderer
                 context.setFillColor(dataSet.color(atIndex: j).cgColor)
             }
 
-            let bezierPath = UIBezierPath(roundedRect: barRect, byRoundingCorners: dataSet.roundedCorners,
+            var roundedCorners = dataSet.roundedCorners
+            if barRect.minX < 0 {
+                roundedCorners.update(with: [.bottomLeft, .bottomRight, .topLeft, .topRight])
+            }
+            let bezierPath = UIBezierPath(roundedRect: barRect, byRoundingCorners: roundedCorners,
                                           cornerRadii: .init(width: dataSet.cornerRadius, height: dataSet.cornerRadius))
             context.addPath(bezierPath.cgPath)
             context.drawPath(using: .fill)