diff --git a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/undo/EditStackTest.java b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/undo/EditStackTest.java
index a4de587..d77453c 100644
--- a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/undo/EditStackTest.java
+++ b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/undo/EditStackTest.java
@@ -10,6 +10,7 @@
  *******************************************************************************/
 package org.eclipse.vex.core.internal.undo;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
@@ -245,6 +246,36 @@
 		assertTrue("undo edit3", edit3.undoCalled);
 	}
 
+	@Test
+	public void threeEditsCommitted_shouldProvideOffsetAfterLastEdit() throws Exception {
+		final EditStack stack = new EditStack();
+		final MockEdit lastEdit = new MockEdit();
+		lastEdit.offsetAfter = 123;
+
+		stack.beginWork();
+		stack.apply(new MockEdit());
+		stack.apply(new MockEdit());
+		stack.apply(lastEdit);
+		final IUndoableEdit committedEdit = stack.commitWork();
+
+		assertEquals(123, committedEdit.getOffsetAfter());
+	}
+
+	@Test
+	public void threeEditsRolledBack_shouldProvideOffsetBeforeFirstEdit() throws Exception {
+		final EditStack stack = new EditStack();
+		final MockEdit firstEdit = new MockEdit();
+		firstEdit.offsetBefore = 123;
+
+		stack.beginWork();
+		stack.apply(firstEdit);
+		stack.apply(new MockEdit());
+		stack.apply(new MockEdit());
+		final IUndoableEdit rolledbackEdit = stack.rollbackWork();
+
+		assertEquals(123, rolledbackEdit.getOffsetBefore());
+	}
+
 	private static class MockEdit implements IUndoableEdit {
 
 		public boolean redoCalled;
@@ -253,6 +284,8 @@
 		private final boolean canUndo;
 		private final boolean canRedo;
 		public boolean canCombine;
+		public int offsetBefore;
+		public int offsetAfter;
 
 		public MockEdit() {
 			this(true, true);
@@ -290,11 +323,11 @@
 		}
 
 		public int getOffsetBefore() {
-			return 0;
+			return offsetBefore;
 		}
 
 		public int getOffsetAfter() {
-			return 0;
+			return offsetAfter;
 		}
 	}
 }
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/undo/EditStack.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/undo/EditStack.java
index fd21ad9..cdb9143 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/undo/EditStack.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/undo/EditStack.java
@@ -75,20 +75,22 @@
 		pendingEdits.push(new CompoundEdit());
 	}
 
-	public void commitWork() {
+	public IUndoableEdit commitWork() {
 		if (pendingEdits.isEmpty()) {
 			throw new CannotApplyException("No edit pending, cannot commit!");
 		}
 
-		apply(pendingEdits.pop());
+		return apply(pendingEdits.pop());
 	}
 
-	public void rollbackWork() {
+	public IUndoableEdit rollbackWork() {
 		if (pendingEdits.isEmpty()) {
 			throw new CannotUndoException("No edit pending, cannot rollback!");
 		}
 
-		pendingEdits.pop().undo();
+		final CompoundEdit work = pendingEdits.pop();
+		work.undo();
+		return work;
 	}
 
 	public boolean inTransaction() {
