 									ctx?.fill(CGRect(x: CGFloat(i - 1) * boxWidth + boxWidth / 2, y: (boxHeight - multipleSelectionBar) / 2, width: boxWidth / 2 + 1, height: multipleSelectionBar))
                                 }
                             }
+
+							// ball
+							let ballRect = CGRect(x: x, y: y, width: size, height: size)
+							if isBookingEdge() {
+								ctx?.setStrokeColor(bookingDateBackgroundColor.cgColor)
+								ctx?.setLineWidth(4)
+								ctx?.strokeEllipse(in: ballRect.insetBy(dx: 2, dy: 2))
+								if comparisonDates.contains(date) {
+									ctx?.setFillColor(backgroundHighlightColor)
+									ctx?.fillEllipse(in: ballRect.insetBy(dx: 3, dy: 3))
+								}
+							}
+							else {
+								ctx?.fillEllipse(in: ballRect)
+							}
 						}
                         else {
                             let size = min(boxHeight, boxWidth)

										path.fill()
									}
									else {
										ctx?.fill(CGRect(x: CGFloat(i - 1) * boxWidth + boxWidth / 2, y: y, width: boxWidth / 2 + 1, height: maxConnectorSize))
									}
								}

										path.fill()
									}
									else {
										if isDateBookingDate {
											ctx?.setFillColor(bookingDateBackgroundColor.cgColor)
										}
										ctx?.fill(CGRect(x: CGFloat(i - 1) * boxWidth, y: y, width: boxWidth / 2 + 1, height: maxConnectorSize))
									}
								}
								if containsDate(date + 1.day) {
									if isBookingEdge() {
										if comparisonDates.contains(date) {
											ctx?.fill(CGRect(x: CGFloat(i - 1) * boxWidth, y: y, width: boxWidth / 2 + 1, height: maxConnectorSize))
										}

										ctx?.setFillColor(bookingDateBackgroundColor.cgColor)

										let path = UIBezierPath()
										path.addArc(withCenter: CGPoint(x: x + size / 2 - 1, y: y + size / 2), radius: size / 2, startAngle: -.pi / 2, endAngle: .pi / 2, clockwise: true)
										path.addLine(to: CGPoint(x: x + boxWidth, y: y + size))
