diff --git a/packages/slate/src/commands/at-range.js b/packages/slate/src/commands/at-range.js
index e26f8c032..1a09f74e3 100644
--- a/packages/slate/src/commands/at-range.js
+++ b/packages/slate/src/commands/at-range.js
@@ -367,7 +367,7 @@ Commands.deleteBackwardAtRange = (editor, range, n = 1) => {
// If the focus offset is farther than the number of characters to delete,
// just remove the characters backwards inside the current node.
- if (n < focus.offset) {
+ if (n <= focus.offset) {
range = range.moveFocusBackward(n)
editor.deleteAtRange(range)
return
diff --git a/packages/slate/test/commands/at-range/delete-backward-at-range/from-offset.js b/packages/slate/test/commands/at-range/delete-backward-at-range/from-offset.js
new file mode 100644
index 000000000..c6a3704e4
--- /dev/null
+++ b/packages/slate/test/commands/at-range/delete-backward-at-range/from-offset.js
@@ -0,0 +1,38 @@
+/** @jsx h */
+
+import { Point, Range } from 'slate'
+
+import h from '../../../helpers/h'
+
+export default function(editor) {
+ const { key } = editor.value.document.getFirstText()
+ const range = new Range({
+ anchor: new Point({ key, offset: 2, path: [key] }),
+ focus: new Point({ key, offset: 2, path: [key] }),
+ })
+ editor.deleteBackwardAtRange(range, 2)
+}
+
+export const input = (
+
+
+
+
+ Sample Text
+
+
+
+
+)
+
+export const output = (
+
+
+
+
+ mple Text
+
+
+
+
+)