diff --git a/kwant/builder.py b/kwant/builder.py
index 90c2262398a460ccedf4eb002b1add5a58a9204f..b3eaf2b4110a05cf3f3c52fcaee53d59e0335644 100644
--- a/kwant/builder.py
+++ b/kwant/builder.py
@@ -1270,12 +1270,22 @@ class Builder:
 
         if sym.num_directions != 1:
             raise ValueError('Only builders with a 1D symmetry are allowed.')
-        for hopping in lead_builder.hoppings():
-            if not -1 <= sym.which(hopping[1])[0] <= 1:
-                msg = ('The following hopping connects non-neighboring lead '
-                       'unit cells. Only nearest-cell hoppings are allowed '
-                       '(consider increasing the lead period).\n{0}')
-                raise ValueError(msg.format(hopping))
+
+        try:
+            hop_range = max(abs(sym.which(hopping[1])[0])
+                            for hopping in lead_builder.hoppings())
+        except ValueError:  # if there are no hoppings max() will raise
+            hop_range = 0
+
+        if hop_range > 1:
+            # Automatically increase the period, potentially warn the user.
+            new_lead = Builder(sym.subgroup((hop_range,)))
+            new_lead.fill(lead_builder, next(iter(lead_builder.sites())),
+                          max_sites=float('inf'))
+            lead_builder = new_lead
+            sym = lead_builder.symmetry
+            H = lead_builder.H
+
         if not H:
             raise ValueError('Lead to be attached contains no sites.')
 
diff --git a/kwant/tests/test_builder.py b/kwant/tests/test_builder.py
index 2f497277cfa87885e18c84ca587bd16323114038..6d9573b2f287c460c59050cafe1c377704bd8c7e 100644
--- a/kwant/tests/test_builder.py
+++ b/kwant/tests/test_builder.py
@@ -755,6 +755,19 @@ def test_attach_lead():
     assert len(list(syst.sites())) == 6
     syst.attach_lead(lead, fam(-5))
     assert set(syst.leads[0].interface) == set([fam(-1), fam(0)])
+
+    # add some further-than-nearest-neighbor hoppings
+    hop_range = 3
+    lead = builder.Builder(VerySimpleSymmetry(1))
+    lead[fam(0)] = 1
+    for i in range(1, hop_range + 1):
+        lead[fam(0), fam(i)] = 1
+    syst.attach_lead(lead)
+    expanded_lead = syst.leads[-1].builder
+    assert expanded_lead.symmetry.period == hop_range
+    assert len(list(expanded_lead.sites())) == hop_range
+
+    # check that we can actually finalize the system
     syst.finalized()