diff --git a/flag.go b/flag.go
index 2e4cac0..ad65dda 100644
--- a/flag.go
+++ b/flag.go
@@ -543,6 +543,11 @@
 
 		if s[1] == '-' {
 			args, err = f.parseLongArg(s, args)
+
+			if len(s) == 2 {
+				// stop parsing after --
+				break
+			}
 		} else {
 			args, err = f.parseShortArg(s, args)
 		}
diff --git a/flag_test.go b/flag_test.go
index 47865bd..a33c601 100644
--- a/flag_test.go
+++ b/flag_test.go
@@ -197,8 +197,8 @@
 		notaflag,
 	}
 	f.SetOutput(ioutil.Discard)
-	if err := f.Parse(args); err == nil {
-		t.Error("--i-look-like-a-flag should throw an error")
+	if err := f.Parse(args); err != nil {
+		t.Error("expected no error, got ", err)
 	}
 	if !f.Parsed() {
 		t.Error("f.Parse() = false after Parse")
@@ -356,3 +356,37 @@
 		t.Fatal("expected interspersed options/non-options to fail")
 	}
 }
+
+func TestTermination(t *testing.T) {
+	f := NewFlagSet("termination", ContinueOnError)
+	boolFlag := f.BoolP("bool", "l", false, "bool value")
+	if f.Parsed() {
+		t.Error("f.Parse() = true before Parse")
+	}
+	arg1 := "ls"
+	arg2 := "-l"
+	args := []string{
+		"--",
+		arg1,
+		arg2,
+	}
+	f.SetOutput(ioutil.Discard)
+	if err := f.Parse(args); err != nil {
+		t.Fatal("expected no error; got ", err)
+	}
+	if !f.Parsed() {
+		t.Error("f.Parse() = false after Parse")
+	}
+	if *boolFlag {
+		t.Error("expected boolFlag=false, got true")
+	}
+	if len(f.Args()) != 2 {
+		t.Errorf("expected 2 arguments, got %d: %v", len(f.Args()), f.Args())
+	}
+	if f.Args()[0] != arg1 {
+		t.Errorf("expected argument %q got %q", arg1, f.Args()[0])
+	}
+	if f.Args()[1] != arg2 {
+		t.Errorf("expected argument %q got %q", arg2, f.Args()[1])
+	}
+}
