Начхать на комментарии. Считаю, что требование однородности относится к предмету обязательства (в данном случае оно денежное), а не к основанию его возникновения. На практике был случай, когда истец взыскал 200 млн., а мы с него по встречному иску 300 млн. (разные основания, плюс неустойка). Поскольку истец был несостоятельным, то возникла угроза прогона судебным исполнителем наших денег истцу и обратно со снятием с нас исполнительской санкции, поэтому просили о зачете. Суды первой и апелляционной инстанций это заявление игнорировали, кассационный - удовлетворил. Закон рационален, исходя из этого его и нужно толковать. В данном случае цель - экономия и больше ничего. Но если покажете, что основание обязательства имеет для зачета хотя бы малейшее значение, возможно я соглашусь.