diff --git "a/D:\\Components\\jvclg\\jvcl\\run\\JvMemoryDataset.pas" "b/C:\\Users\\User\\Documents\\RAD Studio\\Projects\\JMD AutoIncrement Test\\JvMemoryDataset.pas"
index cef77ee..ad49617 100644
--- "a/D:\\Components\\jvclg\\jvcl\\run\\JvMemoryDataset.pas"
+++ "b/C:\\Users\\User\\Documents\\RAD Studio\\Projects\\JMD AutoIncrement Test\\JvMemoryDataset.pas"	
@@ -2008,7 +2008,7 @@ end;
 function TJvMemoryData.LoadFromDataSet(Source: TDataSet; RecordCount: Integer;
   Mode: TLoadMode; DisableAllControls: Boolean = True): Integer;
 var
-  MovedCount, I: Integer;
+  MovedCount, I, FinalAutoInc: Integer;
   SB, DB: TBookmark;
 begin
   Result := 0;
@@ -2050,6 +2050,8 @@ begin
         Source.First;
         MovedCount := MaxInt;
       end;
+
+      FinalAutoInc := 0;
       FAutoIncField := nil;
       // FixReadOnlyFields also sets FAutoIncField if there is any
       FixReadOnlyFields(False);
@@ -2069,7 +2071,10 @@ begin
           AssignRecord(Source, Self, True);
           // assign AutoInc value manually (make user keep largest if source isn't sorted by autoinc field)
           if (FAutoIncField <> nil) and (FSrcAutoIncField <> nil) then
-            FAutoInc := Max(FAutoInc, FSrcAutoIncField.AsInteger);
+          begin
+            FinalAutoInc := Max(FinalAutoInc, FSrcAutoIncField.AsInteger);
+            FAutoInc := FSrcAutoIncField.AsInteger; //SetAutoIncFields will write this value to all fields with ftAutoInc
+          end;
           if (Mode = lmCopy) and (FApplyMode <> amNone) then
             FieldByName(FStatusName).AsInteger := Integer(rsOriginal);
           Post;
@@ -2086,6 +2091,8 @@ begin
           FRowsAffected := 0;
         end;
         FixReadOnlyFields(True);
+        if Mode = lmCopy then
+          FAutoInc := FinalAutoInc + 1;
         FAutoIncField := nil;
         FSrcAutoIncField := nil;
         First;
@@ -2468,7 +2475,7 @@ end;
 
 function TJvMemoryData.CopyFromDataSet: Integer;
 var
-  I, Len: Integer;
+  I, Len, FinalAutoInc: Integer;
   Original, StatusField: TField;
   OriginalFields: array of TField;
   FieldReadOnly: Boolean;
@@ -2515,6 +2522,7 @@ begin
     if FApplyMode <> amNone then
       StatusField := FieldByName(FStatusName);
 
+    FinalAutoInc := 0;
     FAutoIncField := nil;
     // find first source autoinc field
     FSrcAutoIncField := nil;
@@ -2552,7 +2560,10 @@ begin
       end;
       // assign AutoInc value manually (make user keep largest if source isn't sorted by autoinc field)
       if (FAutoIncField <> nil) and (FSrcAutoIncField <> nil) then
-        FAutoInc := Max(FAutoInc, FSrcAutoIncField.AsInteger);
+      begin
+        FinalAutoInc := Max(FinalAutoInc, FSrcAutoIncField.AsInteger);
+        FAutoInc := FSrcAutoIncField.AsInteger; //SetAutoIncFields will write this value to all fields with ftAutoInc
+      end;
       if FApplyMode <> amNone then
         StatusField.AsInteger := Integer(rsOriginal);
       Post;
@@ -2562,6 +2573,7 @@ begin
     FRowsChanged := 0;
     FRowsAffected := 0;
   finally
+    FAutoInc := FinalAutoInc + 1;
     SetLength(FCopyFromDataSetFieldDefs, 0);
     FSaveLoadState := slsNone;
     EnableControls;
