Hello Adel and Christoph, Thanks for the suggestion and explanation! I finally found a workaround to avoid any additionally added sites. Every lead is connected just as expected. The trick is to define each lead and attach their reversed() only. I put the modified part of the code here in case that anyone else finds it helpful.
neg_direc = [(-mx,-my),(my,-mx)] # (negative) X-axis & Y-axis rotated from old x- & y-axis pos_direc = [(mx,my),(-my,mx)] # (positive) X-axis & Y-axis rotated from old x- & y-axis direcI = 0 # lead along which rotated axis: 0 for X, 1 for Y direcIp = 1 # the other axis ... sym0 = kwant.TranslationalSymmetry(neg_direc[direcI]) sym0.add_site_family(lat, other_vectors=[neg_direc[direcIp]]) sym1 = kwant.TranslationalSymmetry(pos_direc[direcI]) sym1.add_site_family(lat, other_vectors=[pos_direc[direcIp]]) syms = [sym0, sym1] for sym in syms: lead = kwant.Builder(sym) lead[lat.shape(lead_reg, (0,0))] = 4*t # (0,0) should work for I-leads as they fully cover the boundary surface lead[kwant.builder.HoppingKind((1, 0), lat, lat)] = t lead[kwant.builder.HoppingKind((0, 1), lat, lat)] = t syst.attach_lead(lead.reversed()) # this avoids additionally added sites