diff --git a/flag.go b/flag.go
index 4f6f93f..7cc2755 100644
--- a/flag.go
+++ b/flag.go
@@ -260,16 +260,16 @@
 	// a custom error handler.
 	Usage func()
 
-	name           string
-	parsed         bool
-	actual         map[string]*Flag
-	formal         map[string]*Flag
-	shorthands     map[byte]*Flag
-	args           []string // arguments after flags
-	exitOnError    bool     // does the program exit if there's an error?
-	errorHandling  ErrorHandling
-	output         io.Writer // nil means stderr; use out() accessor
-	noInterspersed bool      // do not allow interspersed option/non-option args
+	name          string
+	parsed        bool
+	actual        map[string]*Flag
+	formal        map[string]*Flag
+	shorthands    map[byte]*Flag
+	args          []string // arguments after flags
+	exitOnError   bool     // does the program exit if there's an error?
+	errorHandling ErrorHandling
+	output        io.Writer // nil means stderr; use out() accessor
+	interspersed  bool      // do not allow interspersed option/non-option args
 }
 
 // A Flag represents the state of a flag.
@@ -920,7 +920,7 @@
 		s := args[0]
 		args = args[1:]
 		if len(s) == 0 || s[0] != '-' || len(s) == 1 {
-			if f.noInterspersed {
+			if !f.interspersed {
 				f.args = append(f.args, s)
 				f.args = append(f.args, args...)
 				return nil
@@ -1028,9 +1028,9 @@
 	commandLine.Parse(os.Args[1:])
 }
 
-// Do not support interspersed option/non-option arguments.
-func NoInterspersed() {
-	commandLine.NoInterspersed()
+// Whether to support interspersed option/non-option arguments.
+func SetInterspersed(interspersed bool) {
+	commandLine.SetInterspersed(interspersed)
 }
 
 // Parsed returns true if the command-line flags have been parsed.
@@ -1047,12 +1047,14 @@
 	f := &FlagSet{
 		name:          name,
 		errorHandling: errorHandling,
+		interspersed:  true,
 	}
 	return f
 }
 
-func (f *FlagSet) NoInterspersed() {
-	f.noInterspersed = true
+// Whether to support interspersed option/non-option arguments.
+func (f *FlagSet) SetInterspersed(interspersed bool) {
+	f.interspersed = interspersed
 }
 
 // Init sets the name and error handling property for a flag set.
diff --git a/flag_test.go b/flag_test.go
index 635f431..42d5483 100644
--- a/flag_test.go
+++ b/flag_test.go
@@ -338,7 +338,7 @@
 
 func TestNoInterspersed(t *testing.T) {
 	f := NewFlagSet("test", ContinueOnError)
-	f.NoInterspersed()
+	f.SetInterspersed(false)
 	f.Bool("true", true, "always true")
 	f.Bool("false", false, "always false")
 	err := f.Parse([]string{"--true", "break", "--false"})
