Index: applications/editors/josm/plugins/alignways/src/com/tilusnet/josm/plugins/alignways/AlignWaysAlgnSegment.java
===================================================================
--- applications/editors/josm/plugins/alignways/src/com/tilusnet/josm/plugins/alignways/AlignWaysAlgnSegment.java	(revision 32920)
+++ applications/editors/josm/plugins/alignways/src/com/tilusnet/josm/plugins/alignways/AlignWaysAlgnSegment.java	(revision 32921)
@@ -114,16 +114,22 @@
      */
     private EastNorth getPivotCoord(PivotLocations pp) {
-        switch (pp) {
-        case NONE:
-            return null;
-        case NODE1:
-            return segment.way.getNode(segment.lowerIndex).getEastNorth();
-        case NODE2:
-            return segment.way.getNode(segment.lowerIndex + 1).getEastNorth();
-        case CENTRE:
-            return getPivotCoord(PivotLocations.NODE1).getCenter(
-                    getPivotCoord(PivotLocations.NODE2));
-        default:
-            // Should never happen
+        try {
+            EastNorth n1;
+            EastNorth n2;
+            switch (pp) {
+            case NODE1:
+                return segment.way.getNode(segment.lowerIndex).getEastNorth();
+            case NODE2:
+                return segment.way.getNode(segment.lowerIndex + 1).getEastNorth();
+            case CENTRE:
+                n1 = getPivotCoord(PivotLocations.NODE1);
+                n2 = getPivotCoord(PivotLocations.NODE2);
+                return n1 != null && n2 != null ? n1.getCenter(n2) : null;
+            case NONE:
+            default:
+                return null;
+            }
+        } catch (IndexOutOfBoundsException e) {
+            Main.error(e);
             return null;
         }
Index: applications/editors/josm/plugins/alignways/src/com/tilusnet/josm/plugins/alignways/AlignWaysSegment.java
===================================================================
--- applications/editors/josm/plugins/alignways/src/com/tilusnet/josm/plugins/alignways/AlignWaysSegment.java	(revision 32920)
+++ applications/editors/josm/plugins/alignways/src/com/tilusnet/josm/plugins/alignways/AlignWaysSegment.java	(revision 32921)
@@ -14,4 +14,5 @@
 import java.util.HashSet;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.osm.Node;
@@ -54,10 +55,14 @@
     void setSegmentEndpoints(WaySegment segment) {
         if (segment != null) {
-            Node node1 = segment.way.getNode(segment.lowerIndex);
-            Node node2 = segment.way.getNode(segment.lowerIndex + 1);
+            try {
+                Node node1 = segment.way.getNode(segment.lowerIndex);
+                Node node2 = segment.way.getNode(segment.lowerIndex + 1);
 
-            segmentEndPoints = new HashSet<>();
-            segmentEndPoints.add(node1);
-            segmentEndPoints.add(node2);
+                segmentEndPoints = new HashSet<>();
+                segmentEndPoints.add(node1);
+                segmentEndPoints.add(node2);
+            } catch (IndexOutOfBoundsException e) {
+                Main.error(e);
+            }
         }
     }
@@ -97,9 +102,12 @@
 
     protected void drawSegment(Graphics2D g, MapView mv) {
-        Node n1 = segment.way.getNode(segment.lowerIndex);
-        Node n2 = segment.way.getNode(segment.lowerIndex + 1);
+        try {
+            Node n1 = segment.way.getNode(segment.lowerIndex);
+            Node n2 = segment.way.getNode(segment.lowerIndex + 1);
 
-        Line2D newline = new Line2D.Double(mv.getPoint(n1), mv.getPoint(n2));
-        g.draw(newline);
+            g.draw(new Line2D.Double(mv.getPoint(n1), mv.getPoint(n2)));
+        } catch (IndexOutOfBoundsException e) {
+            Main.error(e);
+        }
     }
 
