diff --git a/packages/imask/example.html b/packages/imask/example.html
index 9f89f006..cdb49ef4 100644
--- a/packages/imask/example.html
+++ b/packages/imask/example.html
@@ -17,25 +17,6 @@ <h1>IMask Core Demo</h1>
       lazy: false,
       overwrite: true,
       autofix: 'pad',
-      blocks: {
-        d: {
-          mask: IMask.MaskedRange,
-          from: 1,
-          to: 31,
-          maxLength: 2,
-        },
-        m: {
-          mask: IMask.MaskedRange,
-          from: 1,
-          to: 12,
-          maxLength: 2,
-        },
-        Y: {
-          mask: IMask.MaskedRange,
-          from: 2023,
-          to: 2023,
-        },
-      },
     };
 
     const input = document.getElementById('input');
diff --git a/packages/imask/src/masked/base.ts b/packages/imask/src/masked/base.ts
index df64fb15..dbc51283 100644
--- a/packages/imask/src/masked/base.ts
+++ b/packages/imask/src/masked/base.ts
@@ -231,20 +231,24 @@ abstract class Masked<Value=any> {
         const beforeTailState = this.state;
         if (this.overwrite === true) {
           consistentTail = checkTail.state;
-          checkTail.unshift(this.displayValue.length - details.tailShift);
+          for (let i=0; i < details.rawInserted.length; ++i) {
+            checkTail.unshift(this.displayValue.length - details.tailShift);
+          }
         }
 
         let tailDetails = this.appendTail(checkTail);
-        appended = tailDetails.rawInserted === checkTail.toString();
+        appended = tailDetails.rawInserted.length === checkTail.toString().length;
 
         // not ok, try shift
         if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {
           this.state = beforeTailState;
           consistentTail = checkTail.state;
-          checkTail.shift();
+          for (let i=0; i < details.rawInserted.length; ++i) {
+            checkTail.shift();
+          }
 
           tailDetails = this.appendTail(checkTail);
-          appended = tailDetails.rawInserted === checkTail.toString();
+          appended = tailDetails.rawInserted.length === checkTail.toString().length;
         }
 
         // if ok, rollback state after tail
diff --git a/packages/imask/src/masked/pattern.ts b/packages/imask/src/masked/pattern.ts
index 0c8bd37b..dd050e01 100644
--- a/packages/imask/src/masked/pattern.ts
+++ b/packages/imask/src/masked/pattern.ts
@@ -305,10 +305,7 @@ class MaskedPattern<Value=string> extends Masked<Value> {
     const details = new ChangeDetails();
     if (!blockIter) return details;
 
-    for (let bi=blockIter.index; ; ++bi) {
-      const block = this._blocks[bi];
-      if (!block) break;
-
+    for (let bi=blockIter.index, block; (block = this._blocks[bi]); ++bi) {
       const blockDetails = block._appendChar(ch, { ...flags, _beforeTailState: flags._beforeTailState?._blocks?.[bi] });
 
       const skip = blockDetails.skip;
diff --git a/packages/imask/test/masked/base.ts b/packages/imask/test/masked/base.ts
index 6a3de976..1f39213b 100644
--- a/packages/imask/test/masked/base.ts
+++ b/packages/imask/test/masked/base.ts
@@ -5,6 +5,7 @@ import MaskedPattern from '../../src/masked/pattern';
 import MaskedDate from '../../src/masked/date';
 import MaskedNumber from '../../src/masked/number';
 import { DIRECTION } from '../../src/core/utils';
+import { MaskedRange } from '../../src';
 
 
 describe('Masked', function () {
@@ -147,6 +148,24 @@ describe('Masked', function () {
       masked.splice(4, 0, '0', DIRECTION.NONE, { input: true, raw: true });
       assert.strictEqual(masked.value, '$1,230.45');
     });
+
+    it('should work with autofix', function () {
+      const masked = new MaskedRange({
+        from: 1,
+        to: 31,
+        autofix: 'pad',
+        overwrite: true,
+      });
+
+      masked.value = '12';
+      assert.strictEqual(masked.value, '12');
+
+      masked.splice(0, 0, '3', DIRECTION.NONE, { input: true, raw: true });
+      assert.strictEqual(masked.value, '31');
+
+      masked.splice(0, 0, '4', DIRECTION.NONE, { input: true, raw: true });
+      assert.strictEqual(masked.value, '04');
+    });
   });
 
   describe('#splice', function () {