anchor.diff:    id: Integer;
     A: TKMAnimLoop;
     R: TRXData;
  +  InterpOffset: Integer;
   begin
     A := gRes.Units.SerfCarry[aCarry, aDir];
  -  id := A.Step[StepId mod Byte(A.Count) + 1] + 1;
  +  InterpOffset := GetCarryInterpSpriteOffset(aCarry, aDir);
  +
  +  //While in development disable interpolation if the sprite is missing
  +  if (InterpOffset >= 1) and ((InterpOffset >= fRXData[rxUnits].Count) or (fRXData[rxUnits].Size[InterpOffset].X = 0)) then
  +    InterpOffset := -1;
  +
  +  if InterpOffset >= 0 then
  +  begin
  +    id := InterpOffset
  +      + INTERP_LEVEL*(StepId mod Byte(A.Count))
  +      + EnsureRange(Floor(INTERP_LEVEL*StepFrac), 0, INTERP_LEVEL-1);
  +  end
  +  else
  +  begin
  +    id := A.Step[StepId mod Byte(A.Count) + 1] + 1;
  +  end;
  +
     if id <= 0 then Exit;
     R := fRXData[rxUnits];
   
  
positive.code: end;
  
  
  function GetInterpSpriteOffset(aUnit: TKMUnitType; aAct: TKMUnitActionType; aDir: TKMDirection): Integer;
  const
    ACTION_INTERP_LOOKUP: array[TKMUnitType, TKMUnitActionType, TKMDirection] of Integer = (
    ( // utNone
  
negative.code: var
    A: TKMAnimLoop;
    InterpOffset: Integer;
  begin
    A := gRes.Units[aUnit].UnitAnim[aAct, aDir];
    InterpOffset := GetUnitInterpSpriteOffset(aUnit, aAct, aDir);
  
    //While in development disable interpolation if the sprite is missing
    if (InterpOffset >= 1) and ((InterpOffset >= fRXData[rxUnits].Count) or (fRXData[rxUnits].Size[InterpOffset].X = 0)) then
  