diff --git a/kwant/lattice.py b/kwant/lattice.py
index 4834f664a4226c09fe8ad85387eee907418910e5..5a6614708ab0d30349e8309cc464ab473620d79a 100644
--- a/kwant/lattice.py
+++ b/kwant/lattice.py
@@ -99,12 +99,13 @@ class PolyatomicLattice(object):
         Site = builder.Site
 
         dim = len(start)
+        num_vecs = len(self.prim_vecs)
         if dim != self.prim_vecs.shape[1]:
             raise ValueError('Dimensionality of start position does not match'
                              ' the space dimensionality.')
         sls = self.sublattices
-        deltas = [ta.array(i * (0,) + (1,) + (dim - 1 - i) * (0,))
-                  for i in xrange(dim)]
+        deltas = [ta.array(i * (0,) + (1,) + (num_vecs - 1 - i) * (0,))
+                  for i in xrange(num_vecs)]
         deltas += [-delta for delta in deltas]
 
         # Check if no sites are going to be added, to catch a common error.
@@ -187,10 +188,11 @@ class MonatomicLattice(PolyatomicLattice, builder.SiteGroup):
 
         builder.SiteGroup.__init__(self)
         self.dim = dim
+        self._lattice_dim = len(prim_vecs)
 
     def normalize_tag(self, tag):
         tag = ta.array(tag, int)
-        if len(tag) != self.dim:
+        if len(tag) != self._lattice_dim:
             raise ValueError("Dimensionality mismatch.")
         return tag
 
diff --git a/kwant/tests/test_lattice.py b/kwant/tests/test_lattice.py
index 9c8a5495fbdb2996bc379e36e8fff92db6c5d15a..5e93e577a3675b925e21a793a547db901685bf90 100644
--- a/kwant/tests/test_lattice.py
+++ b/kwant/tests/test_lattice.py
@@ -15,6 +15,11 @@ def test_make_lattice():
             site = sl(*tag)
             assert_equal(tag, sl.closest(site.pos))
 
+    # Test 2D lattice with 1 vector.
+    lat = lattice.make_lattice([[1, 0]])
+    site = lat(0)
+    assert_raises(ValueError, lat, 0, 1)
+
 
 def test_shape():
     def in_circle(pos):