anchor.diff:  begin
     AImageItem := TfpgImageItem.Create;
     AImageItem.Image := AImage;
  -  Item[AIndex] := AImageItem;
  +  if AIndex > -1 then
  +    Item[AIndex] := AImageItem
  +  else
  +  begin
  +    FList.Add(AImageItem);
  +    AImageItem.Index := GetMaxItem+1;
  +  end;
   end;
   
   procedure TfpgImageList.RemoveIndex(AIndex: integer);
  
positive.code:   public
      constructor Create;
      destructor  Destroy; override;
      procedure   AddItemFromFile(AFileName: String; AIndex: word);
      procedure   AddImage(AImage: TfpgImage; AIndex: word);
      procedure   RemoveIndex(AIndex: integer);
      function    GetMaxItem: word;
      property    Item[AIndex: integer]: TfpgImageItem read GetItem write SetItem;
  
negative.code: var
    ACounter: integer;
  begin
    result := -1;
    for ACounter := 0 to FList.Count - 1 do
      if TfpgImageItem(FList[ACounter]).Index > result then
        result := TfpgImageItem(FList[ACounter]).Index;
  