Select to pick quarter (date) An includable select to pick the first day of quarter:

&lt;cfparam name="dtFirst" default="#now()#"&gt;&lt;!--- first date in select ---&gt;
&lt;cfparam name="selQtrName" default="selQtr"&gt;&lt;!--- name attr of select ---&gt;
&lt;cfparam name="selQtrCss" default=""&gt;&lt;!--- special style css ---&gt;
&lt;cfparam name="howManyOpts" default="10"&gt;&lt;!--- how many quarters to go back ---&gt;
&lt;cfparam name="selQtrDefault" default=""&gt;&lt;!--- default selected date  current qtr: #right("0"&amp;(1+(quarter(now())-1)*3), 2)#/01/#year(now())# ---&gt;
&lt;cfset raQtoDt=["01/01/","04/01/","07/01/","10/01/"]&gt;
&lt;cfset qtrZWX=quarter(dtFirst)&gt;
&lt;cfset yrZWX=year(dtFirst)&gt;
&lt;cfoutput&gt;
&lt;select name="#selQtrName#" id="#selQtrName#" style="#selQtrCss#"&gt;
&lt;cfloop from="1" to="#howManyOpts#" index="idxZWX"&gt;
    &lt;option value="#raQtoDt[qtrZWX]##yrZWX#"
    &lt;cfif len(selQtrDefault) and selQtrDefault eq "#raQtoDt[qtrZWX]##yrZWX#"&gt;selected&lt;/cfif&gt;&gt;#raQtoDt[qtrZWX]##yrZWX#&lt;/option&gt;
    &lt;cfset qtrZWX=qtrZWX-1&gt;
    &lt;cfif qtrZWX eq "0"&gt;
        &lt;cfset qtrZWX=4&gt;
        &lt;cfset yrZWX=yrZWX-1&gt;
    &lt;/cfif&gt;
&lt;/cfloop&gt;
&lt;/select&gt;
&lt;/cfoutput&gt;
My primary suggestion would be to try and make the code more intuitive. 


While the current variable names are syntactically valid, they are a bit cryptic IMO. Consider using slightly longer and more descriptive names throughout the code. That will make it easier to understand when you come back to it a few months down the road. 
Use date objects (not strings), when generating the quarter dates. Start by creating the initial quarter date with the CreateDate() function. (Use this formula to calculate the first quarter of the month). Then use DateAdd() to derive the remaining quarters. For comparisons, use DateCompare().
Consider using a non-ambiguous format like yyyy-mm-dd for the list value. You can still display a more user friendly format for the list text. 
Be sure to explicitly scope all variables to avoid accidental scope conflicts. For example, if the variables are submitted via URL, use url.howManyOpts instead of just howManyOpts




&lt;cfparam name="url.startDate" default="#now()#"&gt;
&lt;cfparam name="url.howManyOpts" default="10"&gt;
&lt;cfparam name="url.selQuarter" default=""&gt;

&lt;!--- create starting quarter date ---&gt;
&lt;cfset quarterMonth = Int((month(url.startDate) - 1) / 3) * 3 + 1&gt;
&lt;cfset currQuarter = createDate(year(url.startDate), quarterMonth, 1)&gt;

&lt;!--- if selected quarter was not defined, set a default ---&gt;
&lt;cfif !len(trim(url.selQuarter))&gt;
    &lt;cfset url.selQuarter = currQuarter&gt;
&lt;/cfif&gt;


&lt;select name="selQuarter"&gt;
   &lt;cfoutput&gt;
   &lt;cfloop from="1" to="#url.howManyOpts#" index="x"&gt;
       &lt;!--- separated for clarity ---&gt;
       &lt;cfset optValue   = dateFormat(currQuarter, 'yyyy-mm-dd')&gt;
       &lt;cfset optText    = dateFormat(currQuarter, 'mm-dd-yyyy')&gt;
       &lt;cfset isSelected = dateCompare(currQuarter, url.selQuarter) eq 0&gt;

       &lt;option value="#optValue#" &lt;cfif isSelQuarter&gt;selected&lt;/cfif&gt;&gt;#optText#&lt;/option&gt;

       &lt;!--- move to next quarter ---&gt;      
       &lt;cfset currQuarter = dateAdd("m", 3, currQuarter)&gt;
    &lt;/cfloop&gt;
    &lt;/cfoutput&gt;
&lt;/select&gt;