Iván González

CBDR Deviations+: the Central Bank Dealers Range

Category: Indicators By: Iván González Created: October 27, 2026, 5:33 PM
October 27, 2026, 5:33 PM
Indicators
2 Comments
CBDR Deviations+: the Central Bank Dealers Range

Introduction

 

Between 2pm and 8pm New York the market is in the hands of the dealing desks, and the range it builds in those six hours is known as the Central Bank Dealers Range (CBDR). The range itself is not the point. What matters is what you project from it: its height, repeated above its high and below its low, estimates where the high or the low of the next day is likely to form.

The CBDR and the practice of projecting standard deviations from it are concepts taught by ICT (Michael J. Huddleston). CBDR Deviations+ by mayb1dayy is a complete implementation of that model: it measures the window, grades it against the average daily range, projects its deviations, and adds a block projection built from what London actually did. A status panel reports every number, including the London profile of the night.

Theory Behind the Indicator

 

The windows. Four reference windows are available, all in New York time:

  • CBDR, 14:00 to 20:00, Sunday to Thursday (the evening window that feeds the next trading day).
  • Asian Range, 20:00 to 24:00, Sunday to Thursday.
  • London, 02:00 to 05:00, Monday to Friday.
  • A custom window for any reference period you like.

Only the CBDR is drawn by default. The clock is always New York time: the indicator converts the time of every bar from UTC with the US daylight-saving rule, so the windows land on the right candles whatever the time zone of your platform, also in the weeks when Europe and the US change their clocks on different dates.

How the range is measured. By default from the candle bodies: the highest open-or-close to the lowest open-or-close inside the window. A wick carries the dealing spread and every feed disagrees on it, while bodies are what actually traded. The wick range is still drawn as a faint box behind the body range. Wicks can also be used as the basis.

The size test. A dealers range only carries information while it stays tight. The published limits are given in forex pips against a daily range of about 100 pips: about a third of the day as the ideal ceiling and 40% as the point past which the range should not be used. The indicator applies the same ratios to the instrument’s own average daily range (ADR, 20 days by default), so the test works on index futures, metals or crypto too. Every window is graded Ideal, Acceptable or Oversized. An absolute-price mode is also available.

The deviations. One standard deviation is the range height added to the high and subtracted from the low; the second adds it again, and so on up to the fourth. With full labels each multiple carries its meaning: 1 and 2 hold the ideal high or low of the day, 3 is the outer bound most days respect, 4 belongs to a high-impact news day or a session that reverses in New York. A 2.5 multiple is available and off by default. Projections appear when the window closes, never while it forms.

The block projection. London first runs away from the CBDR, usually against the real direction of the day. At 05:00 New York (the end of the London open kill zone) the indicator counts how many whole standard deviations that run reached beyond the range, counting a run that stops just short (by up to 25% of a deviation) as reaching it. The block is the CBDR plus every one of those deviations: a London high at +2 SD makes a block three CBDR heights tall. The block is then stacked the other way: down from the CBDR low when London made the high (sell day), up from the CBDR high when London made the low (buy day). Two blocks are drawn by default, up to four.

A CBDR bigger than 40 pips (or the equivalent in ADR units) is not used: no block is drawn that day and the panel says why. The same happens when London stays inside one deviation.

The London profile. The panel reports facts, not a bias: the Asian range against 20-30 pips, the move from 00:00 to 02:00 New York (up, down or flat), whether price traded through the Asian range or the CBDR before 01:30, and, when there was no clean move by 02:00, the rally and the dip from 02:00 to 03:00 (the delayed profile). The direction of the day comes from the daily chart first.

Key Features at a Glance

 

  • CBDR, Asian, London and custom windows, each with its own times, days, size limits and colour.
  • Body-based measurement with the wick range drawn behind it.
  • Ideal / Acceptable / Oversized grade against the ADR or an absolute price.
  • Deviations at 1, 2, 3 and 4 (and optional 2.5), per window, above, below or both.
  • Block projection from London’s run: the deviations London used, the block staircase, London’s line and the last block as a target level up to 14:00 New York.
  • Blocks turn dotted once price trades to them inside their window.
  • Optional London close kill zone (10:00-12:00) and 14:00 mark.
  • Status panel: window sizes and grades, ADR, day type, London run, block size and London profile.
  • New York clock built from UTC with daylight saving, independent of the platform time zone.
  • Old windows retire after 72 hours, and levels further than 1.5 ADR from price are removed.

How to Read the Indicator

 

  • The range box is the CBDR measured on bodies, with its high, low and dotted equilibrium. The faint box behind it is the wick range.
  • After 05:00 New York the boxes stacked on one edge of the CBDR are the deviations London used: the first in grey, the rest in red (London made the high) or blue (London made the low). The line from the end of the window runs to the candle that made London’s extreme, and its label reads, for example, “London high +2 SD · CBDR 12 p”.
  • The staircase of outlined boxes on the other edge is the block projection. Block 1 shows its own sum (“= CBDR + 2 SD”, “= 3x 12 p = 36 p”) and each dotted line inside a block marks one CBDR height. The last block extends as a level labelled with its price; it stops at 14:00 New York, which usually caps the range of the day on forex and gold.
  • A dotted block level has already been reached inside its window: the target is spent.
  • The panel sums it up: DAY (Sell, Buy, No CBDR, No Judas, or “at 05:00” while London is still running), LONDON (deviations used), BLOCK (size), and the London profile rows.

Practical Applications

 

  • Locating the high or low of the day: on a sell day, the upper deviations (+1, +2) of the CBDR are where the high of the day tends to form; on a buy day, the lower ones locate the low.
  • Daily targets: the block levels give a measured target for the move of the day once London’s run is known, and the 14:00 stop keeps the target inside the window where it is meant to work.
  • Filtering days: an oversized CBDR, a London run inside one deviation or an Asian range outside 20-30 pips are reasons to expect a messy day or to wait for the delayed profile.
  • Checklist before using a block: where is price in the daily range (premium or discount)? Is the bias bullish or bearish? Is the CBDR inside its size limit? Is there an opposing higher-timeframe level or liquidity to aim at? It is not a trade every day.

Indicator Configuration

 

All times are New York time, written as HHMM. Days: 0 = Sunday to Thursday (evening window that feeds the next day), 1 = Monday to Friday.

Reference windows

  • showCbdr / cbdrStart / cbdrEnd / cbdrDays (1, 1400, 2000, 0): the CBDR window.
  • showAsia / asiaStart / asiaEnd / asiaDays (0, 2000, 2400, 0): the Asian range. It also feeds the London profile when it is not drawn.
  • showLondon / lonStart / lonEnd / lonDays (0, 200, 500, 1): the London window.
  • showCustom / custStart / custEnd / custDays (0, 0, 30, 1): a free window, shown as “Custom”.

Measurement

  • measureMode (2): 0 = bodies, 1 = wicks, 2 = bodies with the wick range drawn behind.
  • maxSets (2): windows kept on the chart, 1 to 5.
  • partialTol (60): a window with fewer than this % of its expected candles is reported as Partial (for example Sunday afternoon on index futures).

Standard deviations

  • showDev1 / showDev2 / showDev3 / showDev4 (1): the multiples drawn. showDev25 (0): the 2.5 multiple.
  • showEq (1): the equilibrium (50% of the range).
  • cbdrDevs / asiaDevs / lonDevs / custDevs (0): which windows project deviations. The box, high and low are always drawn.
  • devSpanHours (0): stop the deviation lines after N hours; 0 runs them to price.
  • sideMode (0): 0 = both sides, 1 = above only, 2 = below only.

Size validity

  • gateMode (0): 0 = percent of ADR, 1 = absolute price.
  • adrLen (20): ADR length in days.
  • cbdrIdealPct / cbdrMaxPct (30 / 40), asiaIdealPct / asiaMaxPct (20 / 30), lonIdealPct / lonMaxPct (30 / 40), custIdealPct / custMaxPct (30 / 40): ideal ceiling and hard cap in % of ADR.
  • cbdrIdealAbs, cbdrMaxAbs and the same for the other windows (0): the limits in price, used with gateMode = 1.
  • hideOversized (1): an oversized window keeps its box but does not project.

Retirement

  • expiryHours (72): a window and its drawings expire after this time. 72 hours carries Thursday’s CBDR across the weekend.
  • maxDistAdr (1.5): a level further than this many ADR from price is removed.

Style

  • labelDetail (0): 0 = short labels, 1 = full labels (with the meaning of each deviation), 2 = no labels.
  • tableSize (1): panel text size, 0 = tiny, 1 = small, 2 = normal.
  • cbdrLblPos / asiaLblPos / lonLblPos / custLblPos (0 / 1 / 1 / 0): 0 = right edge (labels next to price, nudged apart when two would overlap), 1 = left of the line, 2 = centred above the line, 3 = hidden.
  • cbdrW, asiaW, lonW, custW (1): width of each window’s high and low lines, 1 to 4. cbdrDevW, asiaDevW, lonDevW, custDevW (1): width of the projection lines. eqW (1) and boxBorderW (1).
  • labelGapAdr (0.04): minimum spacing of the right-edge labels, in ADR.
  • showZone (1): range box. showLevelTags (0): name the high, low and equilibrium lines. showPanel (1): status panel.
  • darkChart (0): set to 1 on a dark background; black elements turn white.
  • cbdrR/G/B, asiaR/G/B, lonR/G/B, custR/G/B, eqR/G/B: colours (0-255).

CBDR block projection

  • showBlocks (1): draw the block projection.
  • blockCount (2): blocks drawn, 1 to 4.
  • blockBasis (0): 0 = bodies, 1 = wicks, 2 = both (the wick set as dashed lines).
  • judasSrc (0): London’s extreme read from 0 = wicks, 1 = bodies.
  • judasHour (5): New York hour at which London’s extreme is counted and the blocks are drawn.
  • sdTolPct (25): a deviation missed by up to this % of a deviation still counts.
  • blockCap (1): stop the blocks at 14:00 New York. noCapMarket (0): set to 1 on index futures and other non-metal futures, which trade on into their own close.
  • showLcKz (0): mark the London close (10:00-12:00) and 14:00.
  • pipMode (0): unit of the size test. 0 = automatic (pips on currency pairs quoted with a 0.0001 pip, ADR / 100 elsewhere), 1 = pips (use it for yen pairs), 2 = ADR / 100 (a 100-pip day is the instrument’s own average day).
  • pipMin / pipIdeal / pipMax (5 / 30 / 40): the CBDR is ideal from pipMin to pipIdeal, pushing it up to pipMax, and not used beyond pipMax.
  • blockStyle (0): 0 = boxes, 1 = lines (one level per block).
  • blockR/G/B, blockTransp (0, 0, 0, 90): block colour and fill transparency.

London profile

  • showProfile (1): report the London profile in the panel.
  • asiaMinP / asiaMaxP (20 / 30): the Asian range filter, in pips.
  • flatPips (10): the 00:00-02:00 move counts as flat under this many pips.
  • breakMins (90): a break of the Asian range or the CBDR counts until this many minutes after 00:00.

Alerts

  • alertSeries (0): set to 1 to return the CBDR +2, -2, +3 and -3 SD levels as invisible series, so you can create alerts such as “close crosses over CBDR +2 SD”. They are off by default because a returned series, even invisible, affects the price scale.

Timeframe. The windows need an intraday chart of 60 minutes or finer; on other timeframes the panel asks for it.

The Code

 

//---------------------------------------------------------------
// PRC_CBDR Deviations+ (M1D)
// version = 0
// 21.10.2026
// Iván González @ www.prorealcode.com
// Author: mayb1dayy
// Sharing ProRealTime knowledge
//--------------------------------------------------------------------//
defparam drawonlastbaronly = true

// ===================== INPUTS =====================
// --- Reference windows, New York time (HHMM)
// The New York clock is built from the UTC time of each bar with the US
// daylight-saving rule, so it does not depend on the platform time zone.
// Days: 0 = Sun-Thu (evening window that feeds the next day), 1 = Mon-Fri (the trading day itself)
showCbdr = 1
cbdrStart = 1400
cbdrEnd = 2000
cbdrDays = 0
showAsia = 0
asiaStart = 2000
asiaEnd = 2400
asiaDays = 0
showLondon = 0
lonStart = 200
lonEnd = 500
lonDays = 1
showCustom = 0
custStart = 0
custEnd = 30
custDays = 1

// --- Measurement
measureMode = 2      // 0 = Bodies, 1 = Wicks, 2 = Bodies + wick reference (faint wick box behind)
maxSets = 2          // windows kept on chart (1-5)
partialTol = 60      // a window holding fewer than this % of its expected bars is Partial

// --- Standard deviations
showDev1 = 1
showDev2 = 1
showDev3 = 1
showDev4 = 1
showDev25 = 0        // 2.5 (not part of the original set)
showEq = 1           // equilibrium (50% of the range)
cbdrDevs = 0         // which ranges project deviations (1 = on)
asiaDevs = 0
lonDevs = 0
custDevs = 0
devSpanHours = 0     // stop deviation lines after N hours (0 = run to price)
sideMode = 0         // 0 = Both, 1 = Above only, 2 = Below only

// --- Size validity
gateMode = 0         // 0 = Percent of ADR, 1 = Absolute price
adrLen = 20          // ADR length (days)
cbdrIdealPct = 30
cbdrMaxPct = 40
asiaIdealPct = 20
asiaMaxPct = 30
lonIdealPct = 30
lonMaxPct = 40
custIdealPct = 30
custMaxPct = 40
cbdrIdealAbs = 0
cbdrMaxAbs = 0
asiaIdealAbs = 0
asiaMaxAbs = 0
lonIdealAbs = 0
lonMaxAbs = 0
custIdealAbs = 0
custMaxAbs = 0
hideOversized = 1    // hide projections from an oversized range

// --- Retirement
expiryHours = 72     // expire a window after N hours
maxDistAdr = 1.5     // remove levels further than N x ADR from price

// --- Style
labelDetail = 0      // 0 = Short, 1 = Full, 2 = None
tableSize = 1        // status panel size: 0 = Tiny, 1 = Small, 2 = Normal
cbdrLblPos = 0       // labels: 0 = Right edge, 1 = Left of line, 2 = Centre above line, 3 = Hidden
asiaLblPos = 1
lonLblPos = 1
custLblPos = 0
cbdrW = 1            // high / low line width (1-4)
asiaW = 1
lonW = 1
custW = 1
cbdrDevW = 1         // projection line width (1-4)
asiaDevW = 1
lonDevW = 1
custDevW = 1
eqW = 1              // equilibrium width (1-4)
boxBorderW = 1       // range box border width (1-4)
labelGapAdr = 0.04   // minimum spacing of the right-edge labels (x ADR)
showZone = 1         // show the range box
showLevelTags = 0    // caption the high, low and equilibrium lines
showPanel = 1        // show the status panel
darkChart = 0        // 1 = dark chart background: black turns white

// --- Colours (0-255)
cbdrR = 0
cbdrG = 0
cbdrB = 0
asiaR = 0
asiaG = 0
asiaB = 0
lonR = 120
lonG = 123
lonB = 134
custR = 0
custG = 0
custB = 0
eqR = 120
eqG = 123
eqB = 134

// --- CBDR block projection
showBlocks = 1       // project the CBDR block
blockCount = 2       // blocks drawn (1-4)
blockBasis = 0       // block measured from: 0 = Bodies, 1 = Wicks, 2 = Both (wick set as dashed lines)
judasSrc = 0         // London extreme read from: 0 = Wicks, 1 = Bodies
judasHour = 5        // the London extreme counts at this New York hour (0-9)
sdTolPct = 25        // count a SD missed by up to this % of a SD
blockCap = 1         // stop the blocks at 14:00 New York
noCapMarket = 0      // 1 = index or other non-metal future: the 14:00 stop does not apply
showLcKz = 0         // mark the London close (10:00-12:00) and 14:00
pipMode = 0          // size test in: 0 = Auto (pips on forex, ADR / 100 elsewhere), 1 = Pips, 2 = ADR / 100
pipMin = 5           // ideal from (pips)
pipIdeal = 30        // ideal to (pips)
pipMax = 40          // no CBDR over (pips)
blockStyle = 0       // draw the block as: 0 = Boxes, 1 = Lines
blockR = 0           // block colour (black turns white on a dark chart)
blockG = 0
blockB = 0
blockTransp = 90     // block fill transparency (0 = opaque, 100 = invisible)

// --- London profile
showProfile = 1      // report the London profile in the panel
asiaMinP = 20        // Asian range from (pips)
asiaMaxP = 30        // Asian range to (pips)
flatPips = 10        // 00:00-02:00 counts as flat under (pips)
breakMins = 90       // break of the range counted until N minutes after 00:00

// --- Alerts
alertSeries = 0      // 1 = return the CBDR +/-2 and +/-3 SD levels as invisible series for the alert tool

// ===================== SETUP =====================
tfSec = GetTimeFrame
tfMin = tfSec / 60
tfOk = 0
IF tfSec < 86400 AND tfMin <= 60 THEN
   tfOk = 1
ENDIF
nSets = max(1, min(5, round(maxSets)))
nBlk = max(1, min(4, round(blockCount)))
maxAge = expiryHours * 3600
useWick = 0
IF measureMode = 1 THEN
   useWick = 1
ENDIF
showWickRef = 0
IF measureMode = 2 THEN
   showWickRef = 1
ENDIF
bodyBlk = 1
IF blockBasis = 1 THEN
   bodyBlk = 0
ENDIF
asBoxes = 0
IF blockStyle = 0 THEN
   asBoxes = 1
ENDIF
wantUp = 1
IF sideMode = 2 THEN
   wantUp = 0
ENDIF
wantDn = 1
IF sideMode = 1 THEN
   wantDn = 0
ENDIF
capOk = 0
IF blockCap = 1 AND noCapMarket = 0 THEN
   capOk = 1
ENDIF
capMkt = 1
IF noCapMarket = 1 THEN
   capMkt = 0
ENDIF
inkC = 0
IF darkChart = 1 THEN
   inkC = 255
ENDIF
// PRT does not expose the instrument type: Auto takes a pip of 0.0001 as forex
// (yen pairs, with a pip of 0.01, need pipMode = 1)
pipFx = 0
IF pipsize > 0 AND pipsize < 0.0005 THEN
   pipFx = 1
ENDIF
pipByTick = 0
IF pipMode = 1 OR (pipMode = 0 AND pipFx = 1) THEN
   pipByTick = 1
ENDIF

// Enabled deviation multiples, in the original order
nDm = 0
IF showDev1 = 1 THEN
   $dm[nDm] = 1
   nDm = nDm + 1
ENDIF
IF showDev2 = 1 THEN
   $dm[nDm] = 2
   nDm = nDm + 1
ENDIF
IF showDev25 = 1 THEN
   $dm[nDm] = 2.5
   nDm = nDm + 1
ENDIF
IF showDev3 = 1 THEN
   $dm[nDm] = 3
   nDm = nDm + 1
ENDIF
IF showDev4 = 1 THEN
   $dm[nDm] = 4
   nDm = nDm + 1
ENDIF

// Per-range settings: 0 = CBDR, 1 = Asia, 2 = London, 3 = Custom
$rOn[0] = showCbdr
$rOn[1] = showAsia
$rOn[2] = showLondon
$rOn[3] = showCustom
$rS[0] = floor(cbdrStart / 100) * 60 + (cbdrStart MOD 100)
$rE[0] = floor(cbdrEnd / 100) * 60 + (cbdrEnd MOD 100)
$rS[1] = floor(asiaStart / 100) * 60 + (asiaStart MOD 100)
$rE[1] = floor(asiaEnd / 100) * 60 + (asiaEnd MOD 100)
$rS[2] = floor(lonStart / 100) * 60 + (lonStart MOD 100)
$rE[2] = floor(lonEnd / 100) * 60 + (lonEnd MOD 100)
$rS[3] = floor(custStart / 100) * 60 + (custStart MOD 100)
$rE[3] = floor(custEnd / 100) * 60 + (custEnd MOD 100)
$rDays[0] = cbdrDays
$rDays[1] = asiaDays
$rDays[2] = lonDays
$rDays[3] = custDays
$rIdP[0] = cbdrIdealPct
$rIdP[1] = asiaIdealPct
$rIdP[2] = lonIdealPct
$rIdP[3] = custIdealPct
$rMxP[0] = cbdrMaxPct
$rMxP[1] = asiaMaxPct
$rMxP[2] = lonMaxPct
$rMxP[3] = custMaxPct
$rIdA[0] = cbdrIdealAbs
$rIdA[1] = asiaIdealAbs
$rIdA[2] = lonIdealAbs
$rIdA[3] = custIdealAbs
$rMxA[0] = cbdrMaxAbs
$rMxA[1] = asiaMaxAbs
$rMxA[2] = lonMaxAbs
$rMxA[3] = custMaxAbs
$rDev[0] = cbdrDevs
$rDev[1] = asiaDevs
$rDev[2] = lonDevs
$rDev[3] = custDevs
$rLbl[0] = cbdrLblPos
$rLbl[1] = asiaLblPos
$rLbl[2] = lonLblPos
$rLbl[3] = custLblPos
$rW[0] = cbdrW
$rW[1] = asiaW
$rW[2] = lonW
$rW[3] = custW
$rDW[0] = cbdrDevW
$rDW[1] = asiaDevW
$rDW[2] = lonDevW
$rDW[3] = custDevW
$rCr[0] = cbdrR
$rCg[0] = cbdrG
$rCb[0] = cbdrB
$rCr[1] = asiaR
$rCg[1] = asiaG
$rCb[1] = asiaB
$rCr[2] = lonR
$rCg[2] = lonG
$rCb[2] = lonB
$rCr[3] = custR
$rCg[3] = custG
$rCb[3] = custB
FOR rIx = 0 TO 3 DO
   spanM = $rE[rIx] - $rS[rIx]
   IF $rE[rIx] <= $rS[rIx] THEN
      spanM = $rE[rIx] + 1440 - $rS[rIx]
   ENDIF
   $rExp[rIx] = 0
   IF tfMin > 0 THEN
      $rExp[rIx] = spanM / tfMin
   ENDIF
   // London keeps its colour; the other ranges turn white on a dark chart when black
   IF darkChart = 1 AND rIx <> 2 AND $rCr[rIx] + $rCg[rIx] + $rCb[rIx] = 0 THEN
      $rCr[rIx] = 255
      $rCg[rIx] = 255
      $rCb[rIx] = 255
   ENDIF
NEXT
blkR = blockR
blkG = blockG
blkB = blockB
IF darkChart = 1 AND blkR + blkG + blkB = 0 THEN
   blkR = 255
   blkG = 255
   blkB = 255
ENDIF
blkA = round(255 * (100 - min(100, max(0, blockTransp))) / 100)

// Average daily range of the previous adrLen completed daily bars
TIMEFRAME(daily)
adrRaw = average[adrLen](high - low)
adrDay = adrRaw[1]
TIMEFRAME(default)

// ===================== ENGINE: one pass per CLOSED bar =====================
// The original only reads confirmed bars. All state lives in arrays and the
// guard lets each bar through once (arrays do not rewind between ticks).
IF barindex = 0 THEN
   // An array element never assigned reads as undefined, not 0: every
   // array the engine reads is seeded here, with -1 for "no bar index yet".
   $guard[0] = -1
   FOR rIx = 0 TO 3 DO
      $wasIn[rIx] = 0
      $prevIn[rIx] = 0
      $fOn[rIx] = 0
      $fN[rIx] = 0
      $fBH[rIx] = 0
      $fBL[rIx] = 0
      $fBHI[rIx] = 0
      $fBLI[rIx] = 0
      $fWH[rIx] = 0
      $fWL[rIx] = 0
      $fWHI[rIx] = 0
      $fWLI[rIx] = 0
      $fST[rIx] = 0
      $fSI[rIx] = 0
      $fET[rIx] = 0
      $fEI[rIx] = 0
      $fWE[rIx] = 0
      $fWEI[rIx] = -1
      $cSet[rIx] = 0
      $cOk[rIx] = 0
      $cPart[rIx] = 0
      $cOver[rIx] = 0
      $cGrade[rIx] = 0
      $cHi[rIx] = 0
      $cLo[rIx] = 0
      $cRng[rIx] = 0
      $cNow[rIx] = 0
   NEXT
   FOR bIx = 0 TO 19 DO
      $sId[bIx] = 0
      $sBorn[bIx] = 0
      $sSI[bIx] = 0
      $sST[bIx] = 0
      $sEI[bIx] = 0
      $sET[bIx] = 0
      $sRI[bIx] = -1
      $sRT[bIx] = 0
      $sHi[bIx] = 0
      $sLo[bIx] = 0
      $sHiI[bIx] = 0
      $sLoI[bIx] = 0
      $sWH[bIx] = 0
      $sWL[bIx] = 0
      $sRng[bIx] = 0
      $sPart[bIx] = 0
      $sOver[bIx] = 0
      $sTag[bIx] = 0
      $sWBox[bIx] = 0
      $sBBox[bIx] = 0
      $sEqOn[bIx] = 0
      $sDevOn[bIx] = 0
      $sDCT[bIx] = 0
      $sDCI[bIx] = -1
   NEXT
   FOR jIx = 0 TO 479 DO
      $rm[jIx] = 0
   NEXT
   FOR jIx = 0 TO 199 DO
      $dvOff[jIx] = 0
   NEXT
   FOR sIx = 0 TO 4 DO
      $kOn[sIx] = 0
      $kBorn[sIx] = 0
      $kBornI[sIx] = 0
      $kDir[sIx] = 0
      $kN[sIx] = 0
      $kH[sIx] = 0
      $kTop[sIx] = 0
      $kBot[sIx] = 0
      $kCapT[sIx] = 0
      $kCapI[sIx] = -1
      $kPipU[sIx] = 0
      $kPipOk[sIx] = 0
      $kExPx[sIx] = 0
      $kExI[sIx] = 0
      $kJud[sIx] = 0
      $kSI[sIx] = 0
      $kEI[sIx] = 0
      $kMidI[sIx] = 0
      $kwOn[sIx] = 0
      $kwDir[sIx] = 0
      $kwN[sIx] = 0
      $kwH[sIx] = 0
      $kwTop[sIx] = 0
      $kwBot[sIx] = 0
   NEXT
   FOR jIx = 0 TO 19 DO
      $kLI[jIx] = 0
      $kRI[jIx] = 0
   NEXT
   FOR jIx = 0 TO 39 DO
      $kSp[jIx] = 0
   NEXT
   FOR zIx = 0 TO 9 DO
      $zId[zIx] = 0
      $zTop[zIx] = 0
      $zBot[zIx] = 0
      $zST[zIx] = 0
      $zET[zIx] = 0
      $zCT[zIx] = 0
      $zSI[zIx] = -1
      $zEI[zIx] = -1
      $zCI[zIx] = -1
      $zCap[zIx] = 0
   NEXT
   $zCnt[0] = 0
   $jPend[0] = 0
   $jSet[0] = 0
   $jCut[0] = 0
   $jHas[0] = 0
   $jHi[0] = 0
   $jHiI[0] = 0
   $jHiT[0] = 0
   $jLo[0] = 0
   $jLoI[0] = 0
   $jLoT[0] = 0
   $bDayC[0] = 0
   $bLonU[0] = 0
   $bLonD[0] = 0
   $bN[0] = 0
   $bBlkC[0] = 0
   $bV[0] = 0
   $bVOk[0] = 0
   $pAsiaSet[0] = 0
   $pAsiaHi[0] = 0
   $pAsiaLo[0] = 0
   $pMidSet[0] = 0
   $pMidOpen[0] = 0
   $pMidHi[0] = 0
   $pMidLo[0] = 0
   $pMidClose[0] = 0
   $pMidT[0] = 0
   $pMidDone[0] = 0
   $pBrkDir[0] = 0
   $pBrkM[0] = 0
   $pRetSet[0] = 0
   $pRetOpen[0] = 0
   $pRetHi[0] = 0
   $pRetLo[0] = 0
   $pRetDone[0] = 0
   $wasMid[0] = 0
   $wasRet[0] = 0
ENDIF

IF barindex >= 1 AND barindex > $guard[0] THEN
   $guard[0] = barindex
   idxP = barindex - 1
   oP = open[1]
   hP = high[1]
   lP = low[1]
   cP = close[1]
   tP = opentimestamp[1]
   tcP = tP + tfSec
   adrP = adrDay[1]
   adrOkP = 0
   IF adrP > 0 THEN
      adrOkP = 1
   ELSE
      adrP = 0
   ENDIF
   IF pipByTick = 1 THEN
      pipUP = pipsize
   ELSE
      pipUP = adrP / 100
   ENDIF
   distGate = adrP * maxDistAdr

   // ---- New York clock of the closed bar (UTC + US daylight saving) ----
   dayU = floor(tP / 86400)
   zzC = dayU + 719468
   eraC = floor(zzC / 146097)
   doeC = zzC - eraC * 146097
   yoeC = floor((doeC - floor(doeC / 1460) + floor(doeC / 36524) - floor(doeC / 146096)) / 365)
   yearC = yoeC + eraC * 400
   doyC = doeC - (365 * yoeC + floor(yoeC / 4) - floor(yoeC / 100))
   mpC = floor((5 * doyC + 2) / 153)
   IF mpC >= 10 THEN
      yearC = yearC + 1
   ENDIF
   eraM = floor(yearC / 400)
   yoeM = yearC - eraM * 400
   mar1 = eraM * 146097 + yoeM * 365 + floor(yoeM / 4) - floor(yoeM / 100) - 719468
   nov1 = mar1 + 245
   dowMar1 = (mar1 + 4) MOD 7
   dowNov1 = (nov1 + 4) MOD 7
   // DST from the second Sunday of March 02:00 EST to the first Sunday of November 02:00 EDT
   dstOn = (mar1 + ((7 - dowMar1) MOD 7) + 7) * 86400 + 25200
   dstOff = (nov1 + ((7 - dowNov1) MOD 7)) * 86400 + 21600
   nyOff = -18000
   IF tP >= dstOn AND tP < dstOff THEN
      nyOff = -14400
   ENDIF
   nyT = tP + nyOff
   nyDay = floor(nyT / 86400)
   nyMin = floor((nyT - nyDay * 86400) / 60)
   nyDow = (nyDay + 4) MOD 7
   dowNext = (nyDow + 1) MOD 7
   nyDayStart = nyDay * 86400

   // ---- Pending time -> bar index (first bar opening at or after a time) ----
   FOR rIx = 0 TO 3 DO
      IF $fOn[rIx] = 1 AND $fWEI[rIx] < 0 AND tP >= $fWE[rIx] THEN
         $fWEI[rIx] = idxP
      ENDIF
      FOR sIx = 0 TO 4 DO
         bIx = rIx * 5 + sIx
         IF $sId[bIx] > 0 THEN
            IF $sRI[bIx] < 0 AND tP >= $sRT[bIx] THEN
               $sRI[bIx] = idxP
            ENDIF
            IF $sDCT[bIx] > 0 AND $sDCI[bIx] < 0 AND tP >= $sDCT[bIx] THEN
               $sDCI[bIx] = idxP
            ENDIF
         ENDIF
      NEXT
   NEXT
   FOR sIx = 0 TO 4 DO
      IF $kOn[sIx] = 1 AND $kCapT[sIx] > 0 AND $kCapI[sIx] < 0 AND tP >= $kCapT[sIx] THEN
         $kCapI[sIx] = idxP
      ENDIF
   NEXT
   FOR zIx = 0 TO 9 DO
      IF $zId[zIx] > 0 THEN
         IF $zSI[zIx] < 0 AND tP >= $zST[zIx] THEN
            $zSI[zIx] = idxP
         ENDIF
         IF $zEI[zIx] < 0 AND tP >= $zET[zIx] THEN
            $zEI[zIx] = idxP
         ENDIF
         IF $zCI[zIx] < 0 AND tP >= $zCT[zIx] THEN
            $zCI[zIx] = idxP
         ENDIF
      ENDIF
   NEXT

   // ---- Reference windows: open, measure, close, draw ----
   FOR rIx = 0 TO 3 DO
      sMin = $rS[rIx]
      eMin = $rE[rIx]
      dMode = $rDays[rIx]
      okToday = 0
      IF (dMode = 0 AND nyDow <= 4) OR (dMode = 1 AND nyDow >= 1 AND nyDow <= 5) THEN
         okToday = 1
      ENDIF
      okNext = 0
      IF (dMode = 0 AND dowNext <= 4) OR (dMode = 1 AND dowNext >= 1 AND dowNext <= 5) THEN
         okNext = 1
      ENDIF
      inW = 0
      IF eMin > sMin THEN
         IF nyMin >= sMin AND nyMin < eMin AND okToday = 1 THEN
            inW = 1
         ENDIF
      ELSE
         // A window across midnight belongs to the day it ends on
         IF (nyMin >= sMin AND okNext = 1) OR (nyMin < eMin AND okToday = 1) THEN
            inW = 1
         ENDIF
      ENDIF
      wasW = $wasIn[rIx]
      $prevIn[rIx] = wasW
      $wasIn[rIx] = inW
      $cNow[rIx] = 0
      IF $rOn[rIx] = 1 AND tfOk = 1 THEN
         expB = $rExp[rIx]
         IF inW = 1 AND wasW = 0 THEN
            $fOn[rIx] = 1
            $fN[rIx] = 0
            $fST[rIx] = tP
            $fSI[rIx] = idxP
            $fET[rIx] = tcP
            $fEI[rIx] = idxP
            fullEnd = tP + round(expB * tfMin * 60)
            $fWE[rIx] = max(fullEnd, tcP)
            $fWEI[rIx] = -1
            $cOk[rIx] = 0
         ENDIF
         IF inW = 1 AND $fOn[rIx] = 1 THEN
            bbH = max(oP, cP)
            bbL = min(oP, cP)
            IF $fN[rIx] = 0 OR bbH > $fBH[rIx] THEN
               $fBH[rIx] = bbH
               $fBHI[rIx] = idxP
            ENDIF
            IF $fN[rIx] = 0 OR bbL < $fBL[rIx] THEN
               $fBL[rIx] = bbL
               $fBLI[rIx] = idxP
            ENDIF
            IF $fN[rIx] = 0 OR hP > $fWH[rIx] THEN
               $fWH[rIx] = hP
               $fWHI[rIx] = idxP
            ENDIF
            IF $fN[rIx] = 0 OR lP < $fWL[rIx] THEN
               $fWL[rIx] = lP
               $fWLI[rIx] = idxP
            ENDIF
            $fET[rIx] = tcP
            $fEI[rIx] = idxP
            $fN[rIx] = $fN[rIx] + 1
         ENDIF
         IF inW = 0 AND wasW = 1 AND $fOn[rIx] = 1 THEN
            IF useWick = 1 THEN
               wHi = $fWH[rIx]
               wLo = $fWL[rIx]
               wHiI = $fWHI[rIx]
               wLoI = $fWLI[rIx]
            ELSE
               wHi = $fBH[rIx]
               wLo = $fBL[rIx]
               wHiI = $fBHI[rIx]
               wLoI = $fBLI[rIx]
            ENDIF
            wRng = wHi - wLo
            IF gateMode = 0 THEN
               idealLim = adrP * $rIdP[rIx] / 100
               maxLim = adrP * $rMxP[rIx] / 100
            ELSE
               idealLim = $rIdA[rIx]
               maxLim = $rMxA[rIx]
            ENDIF
            capSet = 0
            IF maxLim > 0 THEN
               capSet = 1
            ENDIF
            isOver = 0
            IF capSet = 1 AND wRng > maxLim THEN
               isOver = 1
            ENDIF
            isPart = 0
            IF expB > 0 AND $fN[rIx] < expB * partialTol / 100 THEN
               isPart = 1
            ENDIF
            // grade: 1 Ideal, 2 Oversized, 3 Acceptable, 4 Ungated
            grd = 4
            IF isOver = 1 THEN
               grd = 2
            ELSIF idealLim > 0 AND wRng <= idealLim THEN
               grd = 1
            ELSIF capSet = 1 THEN
               grd = 3
            ENDIF
            newSet = $cSet[rIx] + 1
            $cSet[rIx] = newSet
            $cOk[rIx] = 1
            $cPart[rIx] = isPart
            $cOver[rIx] = isOver
            $cGrade[rIx] = grd
            $cHi[rIx] = wHi
            $cLo[rIx] = wLo
            $cRng[rIx] = wRng
            $cNow[rIx] = 1
            // File the window under its set slot
            slot = newSet MOD 5
            bIx = rIx * 5 + slot
            $sId[bIx] = newSet
            $sBorn[bIx] = tP
            $sSI[bIx] = $fSI[rIx]
            $sST[bIx] = $fST[rIx]
            $sEI[bIx] = $fEI[rIx]
            $sET[bIx] = $fET[rIx]
            $sRT[bIx] = max($fWE[rIx], $fET[rIx])
            IF $fET[rIx] >= $fWE[rIx] THEN
               $sRI[bIx] = $fEI[rIx] + 1
            ELSE
               $sRI[bIx] = $fWEI[rIx]
            ENDIF
            $sHi[bIx] = wHi
            $sLo[bIx] = wLo
            $sHiI[bIx] = wHiI
            $sLoI[bIx] = wLoI
            $sWH[bIx] = $fWH[rIx]
            $sWL[bIx] = $fWL[rIx]
            $sRng[bIx] = wRng
            $sPart[bIx] = isPart
            $sOver[bIx] = isOver
            $sTag[bIx] = 0
            $sWBox[bIx] = showWickRef
            $sBBox[bIx] = showZone
            $sEqOn[bIx] = showEq
            drawDevs = 0
            IF $rDev[rIx] = 1 AND nDm > 0 AND NOT (isOver = 1 AND hideOversized = 1) THEN
               drawDevs = 1
            ENDIF
            $sDevOn[bIx] = drawDevs
            $sDCI[bIx] = -1
            IF devSpanHours > 0 THEN
               $sDCT[bIx] = $fET[rIx] + round(devSpanHours * 3600)
            ELSE
               $sDCT[bIx] = 0
            ENDIF
            FOR jIx = 0 TO 23 DO
               $rm[bIx * 24 + jIx] = 0
            NEXT
            FOR jIx = 0 TO 9 DO
               $dvOff[bIx * 10 + jIx] = 0
            NEXT
            IF rIx = 0 THEN
               $kOn[slot] = 0
               $kwOn[slot] = 0
               FOR jIx = 0 TO 7 DO
                  $kSp[slot * 8 + jIx] = 0
               NEXT
            ENDIF
            $fOn[rIx] = 0
         ENDIF
      ENDIF
   NEXT

   // ---- CBDR block projection ----
   IF tfOk = 1 AND showCbdr = 1 AND showBlocks = 1 THEN
      IF $cNow[0] = 1 THEN
         $jPend[0] = 1
         $jSet[0] = $cSet[0]
         // first judasHour:00 New York at or after this bar
         candL = nyDayStart + judasHour * 3600
         IF candL < nyT THEN
            candL = candL + 86400
         ENDIF
         IF candL + 14400 >= dstOn AND candL + 14400 < dstOff THEN
            $jCut[0] = candL + 14400
         ELSE
            $jCut[0] = candL + 18000
         ENDIF
         $jHas[0] = 0
         $bBlkC[0] = 0
      ENDIF
      IF $jPend[0] = 1 AND $cSet[0] <> $jSet[0] THEN
         $jPend[0] = 0
      ENDIF
      IF $jPend[0] = 1 AND tP >= $jCut[0] THEN
         $jPend[0] = 0
         IF bodyBlk = 1 THEN
            tE = $fBH[0]
            bE = $fBL[0]
         ELSE
            tE = $fWH[0]
            bE = $fWL[0]
         ENDIF
         cbH = tE - bE
         nUp = 0
         nDn = 0
         IF round(cbH / ticksize) > 0 AND $jHas[0] = 1 THEN
            IF $jHi[0] - tE > 0 THEN
               nUp = min(4, floor(round(($jHi[0] - tE) / ticksize) / round(cbH / ticksize) + sdTolPct / 100))
            ENDIF
            IF bE - $jLo[0] > 0 THEN
               nDn = min(4, floor(round((bE - $jLo[0]) / ticksize) / round(cbH / ticksize) + sdTolPct / 100))
            ENDIF
         ENDIF
         bDir = 0
         bNn = 0
         IF nUp >= 1 AND (nDn < 1 OR $jHiT[0] <= $jLoT[0]) THEN
            bDir = -1
            bNn = nUp
         ELSIF nDn >= 1 THEN
            bDir = 1
            bNn = nDn
         ENDIF
         // validity: 1 No CBDR, 2 Pushing it, 3 Small, 4 Ideal
         vGr = 0
         IF pipUP > 0 THEN
            sizeP = round(cbH / pipUP * 1000000) / 1000000
            IF sizeP > pipMax THEN
               vGr = 1
            ELSIF sizeP > pipIdeal THEN
               vGr = 2
            ELSIF sizeP < pipMin THEN
               vGr = 3
            ELSE
               vGr = 4
            ENDIF
         ENDIF
         slotJ = $jSet[0] MOD 5
         IF vGr = 1 THEN
            $sTag[slotJ] = 1
            $bDayC[0] = 1
            $bBlkC[0] = 1
            $bV[0] = round(cbH / pipUP * 10) / 10
            $bVOk[0] = 1
         ELSIF bDir = 0 THEN
            $sTag[slotJ] = 2
            $bDayC[0] = 2
            $bBlkC[0] = 2
         ELSE
            blkH = cbH * (bNn + 1)
            capT = 0
            IF capOk = 1 THEN
               candL = nyDayStart + 14 * 3600
               IF candL < nyT THEN
                  candL = candL + 86400
               ENDIF
               IF candL + 14400 >= dstOn AND candL + 14400 < dstOff THEN
                  capT = candL + 14400
               ELSE
                  capT = candL + 18000
               ENDIF
            ENDIF
            $kOn[slotJ] = 1
            $kBorn[slotJ] = tP
            $kBornI[slotJ] = idxP
            $kDir[slotJ] = bDir
            $kN[slotJ] = bNn
            $kH[slotJ] = cbH
            $kTop[slotJ] = tE
            $kBot[slotJ] = bE
            $kCapT[slotJ] = capT
            $kCapI[slotJ] = -1
            // the block texts are frozen with the pip unit of this bar
            $kPipU[slotJ] = pipUP
            $kPipOk[slotJ] = 0
            IF pipUP > 0 THEN
               $kPipOk[slotJ] = 1
            ENDIF
            IF bDir < 0 THEN
               $kExPx[slotJ] = $jHi[0]
               $kExI[slotJ] = $jHiI[0]
               exT = $jHiT[0]
            ELSE
               $kExPx[slotJ] = $jLo[0]
               $kExI[slotJ] = $jLoI[0]
               exT = $jLoT[0]
            ENDIF
            wSI = $sSI[slotJ]
            wST = $sST[slotJ]
            wET = $sET[slotJ]
            $kSI[slotJ] = wSI
            $kEI[slotJ] = $sEI[slotJ] + 1
            $kJud[slotJ] = 0
            IF exT > wET THEN
               $kJud[slotJ] = 1
            ENDIF
            // The block boxes are placed by time inside and after the CBDR window
            winW = wET - wST
            barS = round(tfMin * 60)
            midT = wST + floor(winW / 2)
            $tgT[0] = midT
            FOR kIx = 1 TO nBlk DO
               $tgT[2 * kIx - 1] = midT + (kIx - 1) * barS
               $tgT[2 * kIx] = midT + (kIx - 1) * barS + floor(winW * 0.8)
            NEXT
            nTg = 2 * nBlk + 1
            FOR gIx = 0 TO nTg - 1 DO
               $tgI[gIx] = idxP + 1
            NEXT
            nScan = min(idxP - wSI, barindex - 1)
            FOR jIx = 0 TO nScan DO
               tjS = opentimestamp[1 + jIx]
               FOR gIx = 0 TO nTg - 1 DO
                  IF tjS >= $tgT[gIx] THEN
                     $tgI[gIx] = idxP - jIx
                  ENDIF
               NEXT
            NEXT
            $kMidI[slotJ] = $tgI[0]
            FOR kIx = 1 TO nBlk DO
               $kLI[slotJ * 4 + kIx - 1] = $tgI[2 * kIx - 1]
               $kRI[slotJ * 4 + kIx - 1] = $tgI[2 * kIx]
            NEXT
            IF asBoxes = 1 THEN
               // the window's own tag gives way to the London label
               $sTag[slotJ] = 3
            ENDIF
            // Wick-measured set (Both)
            IF blockBasis = 2 THEN
               tW = $fWH[0]
               bW = $fWL[0]
               hW = tW - bW
               nUpW = 0
               nDnW = 0
               IF round(hW / ticksize) > 0 AND $jHas[0] = 1 THEN
                  IF $jHi[0] - tW > 0 THEN
                     nUpW = min(4, floor(round(($jHi[0] - tW) / ticksize) / round(hW / ticksize) + sdTolPct / 100))
                  ENDIF
                  IF bW - $jLo[0] > 0 THEN
                     nDnW = min(4, floor(round((bW - $jLo[0]) / ticksize) / round(hW / ticksize) + sdTolPct / 100))
                  ENDIF
               ENDIF
               dirW = 0
               nW = 0
               IF nUpW >= 1 AND (nDnW < 1 OR $jHiT[0] <= $jLoT[0]) THEN
                  dirW = -1
                  nW = nUpW
               ELSIF nDnW >= 1 THEN
                  dirW = 1
                  nW = nDnW
               ENDIF
               okW = 1
               IF pipUP > 0 THEN
                  IF round(hW / pipUP * 1000000) / 1000000 > pipMax THEN
                     okW = 0
                  ENDIF
               ENDIF
               IF dirW <> 0 AND okW = 1 THEN
                  $kwOn[slotJ] = 1
                  $kwDir[slotJ] = dirW
                  $kwN[slotJ] = nW
                  $kwH[slotJ] = hW
                  $kwTop[slotJ] = tW
                  $kwBot[slotJ] = bW
               ENDIF
            ENDIF
            // One name per price: a deviation sitting on a block gives its name to the block
            IF $sDevOn[slotJ] = 1 THEN
               hiS = $sHi[slotJ]
               loS = $sLo[slotJ]
               rgS = $sRng[slotJ]
               FOR dIx = 0 TO nDm - 1 DO
                  mlt = $dm[dIx]
                  FOR sdI = 0 TO 1 DO
                     jLv = 3 + dIx * 2 + sdI
                     IF ((sdI = 0 AND wantUp = 1) OR (sdI = 1 AND wantDn = 1)) AND $rm[slotJ * 24 + jLv] = 0 THEN
                        IF sdI = 0 THEN
                           pxD = hiS + rgS * mlt
                        ELSE
                           pxD = loS - rgS * mlt
                        ENDIF
                        hitB = 0
                        kFrom = 1
                        IF asBoxes = 1 THEN
                           kFrom = nBlk
                        ENDIF
                        FOR kIx = kFrom TO nBlk DO
                           IF bDir > 0 THEN
                              pxB = tE + blkH * kIx
                           ELSE
                              pxB = bE - blkH * kIx
                           ENDIF
                           IF abs(pxB - pxD) < ticksize / 2 THEN
                              hitB = 1
                           ENDIF
                        NEXT
                        IF $kwOn[slotJ] = 1 THEN
                           FOR kIx = 1 TO nBlk DO
                              IF $kwDir[slotJ] > 0 THEN
                                 pxB = $kwTop[slotJ] + $kwH[slotJ] * ($kwN[slotJ] + 1) * kIx
                              ELSE
                                 pxB = $kwBot[slotJ] - $kwH[slotJ] * ($kwN[slotJ] + 1) * kIx
                              ENDIF
                              IF abs(pxB - pxD) < ticksize / 2 THEN
                                 hitB = 1
                              ENDIF
                           NEXT
                        ENDIF
                        IF hitB = 1 THEN
                           $dvOff[slotJ * 10 + dIx * 2 + sdI] = 1
                        ENDIF
                     ENDIF
                  NEXT
               NEXT
            ENDIF
            // London close kill zone and 14:00
            IF showLcKz = 1 THEN
               IF bDir > 0 THEN
                  nearPx = tE
                  farPx = tE + blkH * nBlk
               ELSE
                  nearPx = bE
                  farPx = bE - blkH * nBlk
               ENDIF
               zNew = $zCnt[0] + 1
               $zCnt[0] = zNew
               zs = zNew MOD 10
               $zId[zs] = zNew
               $zTop[zs] = max(nearPx, farPx)
               $zBot[zs] = min(nearPx, farPx)
               $zCap[zs] = capMkt
               FOR gIx = 0 TO 2 DO
                  IF gIx = 0 THEN
                     candL = nyDayStart + 10 * 3600
                  ELSIF gIx = 1 THEN
                     candL = nyDayStart + 12 * 3600
                  ELSE
                     candL = nyDayStart + 14 * 3600
                  ENDIF
                  IF candL < nyT THEN
                     candL = candL + 86400
                  ENDIF
                  IF candL + 14400 >= dstOn AND candL + 14400 < dstOff THEN
                     candU = candL + 14400
                  ELSE
                     candU = candL + 18000
                  ENDIF
                  IF gIx = 0 THEN
                     $zST[zs] = candU
                  ELSIF gIx = 1 THEN
                     $zET[zs] = candU
                  ELSE
                     $zCT[zs] = candU
                  ENDIF
               NEXT
               $zSI[zs] = -1
               $zEI[zs] = -1
               $zCI[zs] = -1
            ENDIF
            IF bDir < 0 THEN
               $bDayC[0] = 3
            ELSE
               $bDayC[0] = 4
            ENDIF
            $bN[0] = bNn
            $bBlkC[0] = 3
            IF pipUP > 0 THEN
               $bV[0] = round(blkH / pipUP * 10) / 10
               $bVOk[0] = 1
            ELSE
               $bV[0] = round(blkH / ticksize) * ticksize
               $bVOk[0] = 0
            ENDIF
         ENDIF
      ENDIF
      IF $jPend[0] = 1 THEN
         IF judasSrc = 0 THEN
            jbH = hP
            jbL = lP
         ELSE
            jbH = max(oP, cP)
            jbL = min(oP, cP)
         ENDIF
         IF $jHas[0] = 0 OR jbH > $jHi[0] THEN
            $jHi[0] = jbH
            $jHiI[0] = idxP
            $jHiT[0] = tP
         ENDIF
         IF $jHas[0] = 0 OR jbL < $jLo[0] THEN
            $jLo[0] = jbL
            $jLoI[0] = idxP
            $jLoT[0] = tP
         ENDIF
         $jHas[0] = 1
         IF bodyBlk = 1 THEN
            tL = $fBH[0]
            bL = $fBL[0]
         ELSE
            tL = $fWH[0]
            bL = $fWL[0]
         ENDIF
         sL = tL - bL
         fUp = 0
         fDn = 0
         IF round(sL / ticksize) > 0 THEN
            IF $jHi[0] - tL > 0 THEN
               fUp = min(4, floor(round(($jHi[0] - tL) / ticksize) / round(sL / ticksize) + sdTolPct / 100))
            ENDIF
            IF bL - $jLo[0] > 0 THEN
               fDn = min(4, floor(round((bL - $jLo[0]) / ticksize) / round(sL / ticksize) + sdTolPct / 100))
            ENDIF
         ENDIF
         $bDayC[0] = 5
         $bLonU[0] = fUp
         $bLonD[0] = fDn
      ENDIF
   ENDIF

   // ---- A block is a target: once price trades to it inside its window it is spent ----
   FOR sIx = 0 TO 4 DO
      IF $kOn[sIx] = 1 AND $sId[sIx] > 0 THEN
         IF tP > $kBorn[sIx] AND ($kCapT[sIx] = 0 OR tP <= $kCapT[sIx]) THEN
            kFrom = 1
            IF asBoxes = 1 THEN
               kFrom = nBlk
            ENDIF
            blkH = $kH[sIx] * ($kN[sIx] + 1)
            FOR kIx = kFrom TO nBlk DO
               IF $rm[sIx * 24 + 12 + kIx] = 0 AND $kSp[sIx * 8 + kIx - 1] = 0 THEN
                  IF $kDir[sIx] > 0 THEN
                     pxB = $kTop[sIx] + blkH * kIx
                     IF hP >= pxB THEN
                        $kSp[sIx * 8 + kIx - 1] = 1
                     ENDIF
                  ELSE
                     pxB = $kBot[sIx] - blkH * kIx
                     IF lP <= pxB THEN
                        $kSp[sIx * 8 + kIx - 1] = 1
                     ENDIF
                  ENDIF
               ENDIF
            NEXT
            IF $kwOn[sIx] = 1 THEN
               blkHW = $kwH[sIx] * ($kwN[sIx] + 1)
               FOR kIx = 1 TO nBlk DO
                  IF $rm[sIx * 24 + 16 + kIx] = 0 AND $kSp[sIx * 8 + 3 + kIx] = 0 THEN
                     IF $kwDir[sIx] > 0 THEN
                        pxB = $kwTop[sIx] + blkHW * kIx
                        IF hP >= pxB THEN
                           $kSp[sIx * 8 + 3 + kIx] = 1
                        ENDIF
                     ELSE
                        pxB = $kwBot[sIx] - blkHW * kIx
                        IF lP <= pxB THEN
                           $kSp[sIx * 8 + 3 + kIx] = 1
                        ENDIF
                     ENDIF
                  ENDIF
               NEXT
            ENDIF
         ENDIF
      ENDIF
   NEXT

   // ---- London profile (facts only) ----
   IF tfOk = 1 AND showProfile = 1 THEN
      // The Asian window feeds the profile even when it is not drawn
      inAsiaP = $wasIn[1]
      wasAsiaP = $prevIn[1]
      inMid = 0
      IF nyMin < 120 AND nyDow >= 1 AND nyDow <= 5 THEN
         inMid = 1
      ENDIF
      inRet = 0
      IF nyMin >= 120 AND nyMin < 180 AND nyDow >= 1 AND nyDow <= 5 THEN
         inRet = 1
      ENDIF
      wasMidP = $wasMid[0]
      $wasMid[0] = inMid
      wasRetP = $wasRet[0]
      $wasRet[0] = inRet
      IF bodyBlk = 1 THEN
         pHiBar = max(oP, cP)
         pLoBar = min(oP, cP)
      ELSE
         pHiBar = hP
         pLoBar = lP
      ENDIF
      IF inAsiaP = 1 AND wasAsiaP = 0 THEN
         $pAsiaSet[0] = 1
         $pAsiaHi[0] = pHiBar
         $pAsiaLo[0] = pLoBar
         $pMidSet[0] = 0
         $pMidDone[0] = 0
         $pBrkDir[0] = 0
         $pRetSet[0] = 0
         $pRetDone[0] = 0
      ELSIF inAsiaP = 1 AND $pAsiaSet[0] = 1 THEN
         $pAsiaHi[0] = max($pAsiaHi[0], pHiBar)
         $pAsiaLo[0] = min($pAsiaLo[0], pLoBar)
      ENDIF
      IF inMid = 1 AND wasMidP = 0 THEN
         $pMidSet[0] = 1
         $pMidOpen[0] = oP
         $pMidHi[0] = hP
         $pMidLo[0] = lP
         $pMidT[0] = tP
         $pMidDone[0] = 0
         $pBrkDir[0] = 0
      ELSIF inMid = 1 AND $pMidSet[0] = 1 THEN
         $pMidHi[0] = max($pMidHi[0], hP)
         $pMidLo[0] = min($pMidLo[0], lP)
      ENDIF
      IF inMid = 1 AND $pMidSet[0] = 1 THEN
         $pMidClose[0] = cP
         IF $pAsiaSet[0] = 1 THEN
            aHi = $pAsiaHi[0]
            aLo = $pAsiaLo[0]
         ELSE
            aHi = hP
            aLo = lP
         ENDIF
         topLvl = aHi
         botLvl = aLo
         IF $cOk[0] = 1 THEN
            IF bodyBlk = 1 THEN
               topLvl = max(aHi, $fBH[0])
               botLvl = min(aLo, $fBL[0])
            ELSE
               topLvl = max(aHi, $fWH[0])
               botLvl = min(aLo, $fWL[0])
            ENDIF
         ENDIF
         IF $pBrkDir[0] = 0 AND tP < $pMidT[0] + breakMins * 60 THEN
            IF hP > topLvl THEN
               $pBrkDir[0] = 1
               $pBrkM[0] = nyMin
            ELSIF lP < botLvl THEN
               $pBrkDir[0] = -1
               $pBrkM[0] = nyMin
            ENDIF
         ENDIF
      ENDIF
      IF inMid = 0 AND wasMidP = 1 AND $pMidSet[0] = 1 THEN
         $pMidDone[0] = 1
      ENDIF
      IF inRet = 1 AND wasRetP = 0 AND $pMidDone[0] = 1 THEN
         $pRetSet[0] = 1
         $pRetOpen[0] = oP
         $pRetHi[0] = hP
         $pRetLo[0] = lP
      ELSIF inRet = 1 AND $pRetSet[0] = 1 THEN
         $pRetHi[0] = max($pRetHi[0], hP)
         $pRetLo[0] = min($pRetLo[0], lP)
      ENDIF
      IF inRet = 0 AND wasRetP = 1 AND $pRetSet[0] = 1 THEN
         $pRetDone[0] = 1
      ENDIF
   ENDIF

   // ---- Retire far-off drawings (a level is removed for good once it is too far from price) ----
   IF distGate > 0 THEN
      FOR rIx = 0 TO 3 DO
         IF $rOn[rIx] = 1 THEN
            oldest = $cSet[rIx] - nSets + 1
            FOR sIx = 0 TO 4 DO
               bIx = rIx * 5 + sIx
               sidV = $sId[bIx]
               IF sidV > 0 AND sidV >= oldest THEN
                  baseI = bIx * 24
                  hiS = $sHi[bIx]
                  loS = $sLo[bIx]
                  rgS = $sRng[bIx]
                  IF $rm[baseI] = 0 AND abs(hiS - cP) > distGate THEN
                     $rm[baseI] = 1
                  ENDIF
                  IF $rm[baseI + 1] = 0 AND abs(loS - cP) > distGate THEN
                     $rm[baseI + 1] = 1
                  ENDIF
                  IF $sEqOn[bIx] = 1 AND $rm[baseI + 2] = 0 AND abs((hiS + loS) / 2 - cP) > distGate THEN
                     $rm[baseI + 2] = 1
                  ENDIF
                  IF $sDevOn[bIx] = 1 THEN
                     FOR dIx = 0 TO nDm - 1 DO
                        mlt = $dm[dIx]
                        IF wantUp = 1 AND $rm[baseI + 3 + dIx * 2] = 0 AND abs(hiS + rgS * mlt - cP) > distGate THEN
                           $rm[baseI + 3 + dIx * 2] = 1
                        ENDIF
                        IF wantDn = 1 AND $rm[baseI + 4 + dIx * 2] = 0 AND abs(loS - rgS * mlt - cP) > distGate THEN
                           $rm[baseI + 4 + dIx * 2] = 1
                        ENDIF
                     NEXT
                  ENDIF
                  IF $sWBox[bIx] = 1 AND $rm[baseI + 21] = 0 AND abs(($sWH[bIx] + $sWL[bIx]) / 2 - cP) > distGate THEN
                     $rm[baseI + 21] = 1
                  ENDIF
                  IF $sBBox[bIx] = 1 AND $rm[baseI + 22] = 0 AND abs((hiS + loS) / 2 - cP) > distGate THEN
                     $rm[baseI + 22] = 1
                  ENDIF
                  IF rIx = 0 AND $kOn[sIx] = 1 THEN
                     IF asBoxes = 0 THEN
                        blkH = $kH[sIx] * ($kN[sIx] + 1)
                        FOR kIx = 1 TO nBlk DO
                           IF $kDir[sIx] > 0 THEN
                              pxB = $kTop[sIx] + blkH * kIx
                           ELSE
                              pxB = $kBot[sIx] - blkH * kIx
                           ENDIF
                           IF $rm[baseI + 12 + kIx] = 0 AND abs(pxB - cP) > distGate THEN
                              $rm[baseI + 12 + kIx] = 1
                           ENDIF
                        NEXT
                     ENDIF
                     IF $kwOn[sIx] = 1 THEN
                        blkHW = $kwH[sIx] * ($kwN[sIx] + 1)
                        FOR kIx = 1 TO nBlk DO
                           IF $kwDir[sIx] > 0 THEN
                              pxB = $kwTop[sIx] + blkHW * kIx
                           ELSE
                              pxB = $kwBot[sIx] - blkHW * kIx
                           ENDIF
                           IF $rm[baseI + 16 + kIx] = 0 AND abs(pxB - cP) > distGate THEN
                              $rm[baseI + 16 + kIx] = 1
                           ENDIF
                        NEXT
                     ENDIF
                  ENDIF
               ENDIF
            NEXT
         ENDIF
      NEXT
   ENDIF
ENDIF

// ===================== DRAWING (last bar) =====================
IF islastbarupdate THEN
   nowT = opentimestamp
   nowI = barindex
   adrN = adrDay
   adrOkN = 0
   IF adrN > 0 THEN
      adrOkN = 1
   ELSE
      adrN = 0
   ENDIF
   IF pipByTick = 1 THEN
      pipUN = pipsize
   ELSE
      pipUN = adrN / 100
   ENDIF
   pipOkN = 0
   IF pipUN > 0 THEN
      pipOkN = 1
   ENDIF
   lblGap = adrN * labelGapAdr
   nSeg = 0
   nRec = 0
   nLb = 0
   IF tfOk = 1 THEN
      FOR rIx = 0 TO 3 DO
         IF $rOn[rIx] = 1 THEN
            cR = $rCr[rIx]
            cG = $rCg[rIx]
            cB = $rCb[rIx]
            lpos = $rLbl[rIx]
            lnW = $rW[rIx]
            dvW = $rDW[rIx]
            oldest = $cSet[rIx] - nSets + 1
            FOR sIx = 0 TO 4 DO
               bIx = rIx * 5 + sIx
               sidV = $sId[bIx]
               IF sidV > 0 AND sidV >= oldest THEN
                  baseI = bIx * 24
                  winLive = 0
                  IF nowT - $sBorn[bIx] <= maxAge THEN
                     winLive = 1
                  ENDIF
                  hiS = $sHi[bIx]
                  loS = $sLo[bIx]
                  rgS = $sRng[bIx]
                  xS = $sSI[bIx]
                  xE = $sEI[bIx] + 1
                  IF $sRI[bIx] >= 0 THEN
                     xR = $sRI[bIx]
                  ELSIF nowT >= $sRT[bIx] THEN
                     xR = nowI
                  ELSE
                     xR = nowI + round(($sRT[bIx] - nowT) / tfSec)
                  ENDIF
                  x2D = nowI
                  IF $sDCT[bIx] > 0 AND $sDCI[bIx] >= 0 THEN
                     x2D = $sDCI[bIx]
                  ENDIF
                  blkLive = 0
                  blkH = 0
                  x2K = nowI
                  IF rIx = 0 THEN
                     IF $kOn[sIx] = 1 AND nowT - $kBorn[sIx] <= maxAge THEN
                        blkLive = 1
                        blkH = $kH[sIx] * ($kN[sIx] + 1)
                        IF $kCapT[sIx] > 0 AND $kCapI[sIx] >= 0 THEN
                           x2K = $kCapI[sIx]
                        ENDIF
                     ENDIF
                  ENDIF
                  IF winLive = 1 AND $sWBox[bIx] = 1 AND $rm[baseI + 21] = 0 THEN
                     $qrX1[nRec] = xS
                     $qrY1[nRec] = $sWH[bIx]
                     $qrX2[nRec] = xR
                     $qrY2[nRec] = $sWL[bIx]
                     $qrR[nRec] = cR
                     $qrG[nRec] = cG
                     $qrB[nRec] = cB
                     $qrA[nRec] = 13
                     $qrFR[nRec] = cR
                     $qrFG[nRec] = cG
                     $qrFB[nRec] = cB
                     $qrFA[nRec] = 13
                     $qrS[nRec] = 1
                     $qrW[nRec] = boxBorderW
                     nRec = nRec + 1
                  ENDIF
                  IF winLive = 1 AND $sBBox[bIx] = 1 AND $rm[baseI + 22] = 0 THEN
                     $qrX1[nRec] = xS
                     $qrY1[nRec] = hiS
                     $qrX2[nRec] = xR
                     $qrY2[nRec] = loS
                     $qrR[nRec] = cR
                     $qrG[nRec] = cG
                     $qrB[nRec] = cB
                     $qrA[nRec] = 0
                     $qrFR[nRec] = cR
                     $qrFG[nRec] = cG
                     $qrFB[nRec] = cB
                     $qrFA[nRec] = 46
                     $qrS[nRec] = 0
                     $qrW[nRec] = 1
                     nRec = nRec + 1
                     tgS = $sTag[bIx]
                     IF tgS < 3 THEN
                        stC = 0
                        IF tgS = 0 THEN
                           IF $sPart[bIx] = 1 THEN
                              stC = 1
                           ELSIF $sOver[bIx] = 1 THEN
                              stC = 2
                           ENDIF
                        ELSIF tgS = 1 THEN
                           stC = 3
                        ELSE
                           stC = 4
                        ENDIF
                        $lbK[nLb] = 6
                        $lbR[nLb] = rIx
                        $lbX[nLb] = round((xS + xR) / 2)
                        $lbY[nLb] = hiS
                        $lbP[nLb] = hiS
                        $lbA[nLb] = 2
                        $lbE[nLb] = 0
                        $lbCr[nLb] = cR
                        $lbCg[nLb] = cG
                        $lbCb[nLb] = cB
                        $lbCa[nLb] = 255
                        $lbN1[nLb] = stC
                        $lbN2[nLb] = round(pipMax)
                        $lbN3[nLb] = 0
                        $lbN4[nLb] = 0
                        nLb = nLb + 1
                     ENDIF
                  ENDIF
                  FOR jLv = 0 TO 20 DO
                     exL = 0
                     lkL = 0
                     n1L = 0
                     n2L = 0
                     n3L = 0
                     n4L = 0
                     lcR = cR
                     lcG = cG
                     lcB = cB
                     lposL = lpos
                     styL = 0
                     wdtL = lnW
                     pxL = 0
                     axL = xS
                     sxL = xE
                     IF jLv = 0 THEN
                        exL = 1
                        pxL = hiS
                        axL = $sHiI[bIx]
                        styL = 0
                        wdtL = lnW
                        IF showLevelTags = 1 THEN
                           lkL = 1
                        ENDIF
                     ELSIF jLv = 1 THEN
                        exL = 1
                        pxL = loS
                        axL = $sLoI[bIx]
                        styL = 0
                        wdtL = lnW
                        IF showLevelTags = 1 THEN
                           lkL = 2
                        ENDIF
                     ELSIF jLv = 2 THEN
                        exL = $sEqOn[bIx]
                        pxL = (hiS + loS) / 2
                        axL = xS
                        styL = 1
                        wdtL = eqW
                        lcR = eqR
                        lcG = eqG
                        lcB = eqB
                        IF showLevelTags = 1 THEN
                           lkL = 3
                        ENDIF
                     ELSIF jLv <= 12 THEN
                        dIx = floor((jLv - 3) / 2)
                        sdI = (jLv - 3) MOD 2
                        IF $sDevOn[bIx] = 1 AND dIx < nDm AND ((sdI = 0 AND wantUp = 1) OR (sdI = 1 AND wantDn = 1)) THEN
                           exL = 1
                           mlt = $dm[dIx]
                           IF sdI = 0 THEN
                              pxL = hiS + rgS * mlt
                           ELSE
                              pxL = loS - rgS * mlt
                           ENDIF
                           axL = xE
                           sxL = x2D
                           styL = 2
                           wdtL = dvW
                           IF $dvOff[bIx * 10 + dIx * 2 + sdI] = 0 THEN
                              lkL = 4
                              n1L = sdI
                              n2L = mlt
                              IF labelDetail = 1 THEN
                                 IF mlt <= 2 THEN
                                    n4L = 1 + sdI
                                 ELSIF mlt = 3 THEN
                                    n4L = 3
                                 ELSIF mlt = 4 THEN
                                    n4L = 4
                                 ENDIF
                              ENDIF
                           ENDIF
                        ENDIF
                     ELSIF jLv <= 16 THEN
                        kIx = jLv - 12
                        IF rIx = 0 AND blkLive = 1 AND kIx <= nBlk AND (asBoxes = 0 OR kIx = nBlk) THEN
                           exL = 1
                           IF $kDir[sIx] > 0 THEN
                              pxL = $kTop[sIx] + blkH * kIx
                              lcR = 29
                              lcG = 78
                              lcB = 216
                           ELSE
                              pxL = $kBot[sIx] - blkH * kIx
                              lcR = 242
                              lcG = 54
                              lcB = 69
                           ENDIF
                           IF asBoxes = 1 THEN
                              axL = $kRI[sIx * 4 + nBlk - 1]
                           ELSE
                              axL = $kBornI[sIx]
                           ENDIF
                           sxL = x2K
                           styL = 0
                           IF $kSp[sIx * 8 + kIx - 1] = 1 THEN
                              styL = 1
                           ENDIF
                           wdtL = cbdrDevW
                           lposL = cbdrLblPos
                           lkL = 5
                           n1L = kIx
                           n2L = 0
                           IF asBoxes = 1 THEN
                              n2L = 2
                              n3L = round(pxL / ticksize) * ticksize
                           ENDIF
                           IF labelDetail = 1 THEN
                              n4L = ($kN[sIx] + 1) * kIx
                           ENDIF
                        ENDIF
                     ELSE
                        kIx = jLv - 16
                        IF rIx = 0 AND blkLive = 1 AND $kwOn[sIx] = 1 AND kIx <= nBlk THEN
                           exL = 1
                           blkHW = $kwH[sIx] * ($kwN[sIx] + 1)
                           IF $kwDir[sIx] > 0 THEN
                              pxL = $kwTop[sIx] + blkHW * kIx
                              lcR = 29
                              lcG = 78
                              lcB = 216
                           ELSE
                              pxL = $kwBot[sIx] - blkHW * kIx
                              lcR = 242
                              lcG = 54
                              lcB = 69
                           ENDIF
                           axL = $kBornI[sIx]
                           sxL = x2K
                           styL = 2
                           IF $kSp[sIx * 8 + 3 + kIx] = 1 THEN
                              styL = 1
                           ENDIF
                           wdtL = cbdrDevW
                           lposL = cbdrLblPos
                           lkL = 5
                           n1L = kIx
                           n2L = 1
                           IF labelDetail = 1 THEN
                              n4L = ($kwN[sIx] + 1) * kIx
                           ENDIF
                        ENDIF
                     ENDIF
                     IF exL = 1 AND $rm[baseI + jLv] = 0 AND (jLv > 12 OR winLive = 1) THEN
                        $qsX1[nSeg] = axL
                        $qsY1[nSeg] = pxL
                        $qsX2[nSeg] = sxL
                        $qsY2[nSeg] = pxL
                        $qsR[nSeg] = lcR
                        $qsG[nSeg] = lcG
                        $qsB[nSeg] = lcB
                        $qsA[nSeg] = 255
                        $qsS[nSeg] = styL
                        $qsW[nSeg] = wdtL
                        nSeg = nSeg + 1
                        IF lkL > 0 AND labelDetail <> 2 AND lposL <> 3 THEN
                           IF lposL = 0 THEN
                              lbXv = sxL
                              lbAv = 0
                              lbEv = 1
                           ELSIF lposL = 1 THEN
                              lbXv = axL
                              lbAv = 1
                              lbEv = 0
                           ELSE
                              lbXv = round((axL + sxL) / 2)
                              lbAv = 2
                              lbEv = 0
                           ENDIF
                           $lbK[nLb] = lkL
                           $lbR[nLb] = rIx
                           $lbX[nLb] = lbXv
                           $lbY[nLb] = pxL
                           $lbP[nLb] = pxL
                           $lbA[nLb] = lbAv
                           $lbE[nLb] = lbEv
                           $lbCr[nLb] = lcR
                           $lbCg[nLb] = lcG
                           $lbCb[nLb] = lcB
                           $lbCa[nLb] = 255
                           $lbN1[nLb] = n1L
                           $lbN2[nLb] = n2L
                           $lbN3[nLb] = n3L
                           $lbN4[nLb] = n4L
                           nLb = nLb + 1
                        ENDIF
                     ENDIF
                  NEXT
                  IF blkLive = 1 THEN
                     IF asBoxes = 1 THEN
                        FOR kIx = 1 TO $kN[sIx] DO
                           IF $kDir[sIx] < 0 THEN
                              sdA = $kTop[sIx] + $kH[sIx] * (kIx - 1)
                              sdB = $kTop[sIx] + $kH[sIx] * kIx
                           ELSE
                              sdA = $kBot[sIx] - $kH[sIx] * (kIx - 1)
                              sdB = $kBot[sIx] - $kH[sIx] * kIx
                           ENDIF
                           IF kIx = 1 THEN
                              sR = 160
                              sG = 160
                              sB = 160
                              sA = 140
                           ELSIF $kDir[sIx] < 0 THEN
                              sR = 242
                              sG = 54
                              sB = 69
                              sA = 102
                           ELSE
                              sR = 29
                              sG = 78
                              sB = 216
                              sA = 102
                           ENDIF
                           $qrX1[nRec] = $kSI[sIx]
                           $qrY1[nRec] = max(sdA, sdB)
                           $qrX2[nRec] = $kEI[sIx]
                           $qrY2[nRec] = min(sdA, sdB)
                           $qrR[nRec] = sR
                           $qrG[nRec] = sG
                           $qrB[nRec] = sB
                           $qrA[nRec] = sA
                           $qrFR[nRec] = sR
                           $qrFG[nRec] = sG
                           $qrFB[nRec] = sB
                           $qrFA[nRec] = sA
                           $qrS[nRec] = 0
                           $qrW[nRec] = 1
                           nRec = nRec + 1
                           IF $kPipOk[sIx] = 1 THEN
                              sdV = round($kH[sIx] / $kPipU[sIx] * 10) / 10
                           ELSE
                              sdV = round($kH[sIx] / ticksize) * ticksize
                           ENDIF
                           $lbK[nLb] = 8
                           $lbR[nLb] = 0
                           $lbX[nLb] = round(($kSI[sIx] + $kEI[sIx]) / 2)
                           $lbY[nLb] = (sdA + sdB) / 2
                           $lbP[nLb] = (sdA + sdB) / 2
                           $lbA[nLb] = 4
                           $lbE[nLb] = 0
                           $lbCr[nLb] = inkC
                           $lbCg[nLb] = inkC
                           $lbCb[nLb] = inkC
                           $lbCa[nLb] = 255
                           $lbN1[nLb] = kIx
                           $lbN2[nLb] = sdV
                           $lbN3[nLb] = $kPipOk[sIx]
                           $lbN4[nLb] = 0
                           nLb = nLb + 1
                        NEXT
                        FOR kIx = 1 TO nBlk DO
                           IF $kDir[sIx] > 0 THEN
                              bNear = $kTop[sIx] + blkH * (kIx - 1)
                              bFar = $kTop[sIx] + blkH * kIx
                           ELSE
                              bNear = $kBot[sIx] - blkH * (kIx - 1)
                              bFar = $kBot[sIx] - blkH * kIx
                           ENDIF
                           bLx = $kLI[sIx * 4 + kIx - 1]
                           bRx = $kRI[sIx * 4 + kIx - 1]
                           $qrX1[nRec] = bLx
                           $qrY1[nRec] = max(bNear, bFar)
                           $qrX2[nRec] = bRx
                           $qrY2[nRec] = min(bNear, bFar)
                           $qrR[nRec] = blkR
                           $qrG[nRec] = blkG
                           $qrB[nRec] = blkB
                           $qrA[nRec] = 255
                           $qrFR[nRec] = blkR
                           $qrFG[nRec] = blkG
                           $qrFB[nRec] = blkB
                           $qrFA[nRec] = blkA
                           $qrS[nRec] = 0
                           $qrW[nRec] = 1
                           nRec = nRec + 1
                           bMx = round((bLx + bRx) / 2)
                           bMy = (bNear + bFar) / 2
                           IF kIx = 1 THEN
                              bDy = blkH * 0.22
                              $lbK[nLb] = 9
                              $lbR[nLb] = 0
                              $lbX[nLb] = bMx
                              $lbY[nLb] = bMy + bDy
                              $lbP[nLb] = bMy + bDy
                              $lbA[nLb] = 4
                              $lbE[nLb] = 0
                              $lbCr[nLb] = inkC
                              $lbCg[nLb] = inkC
                              $lbCb[nLb] = inkC
                              $lbCa[nLb] = 140
                              $lbN1[nLb] = 1
                              $lbN2[nLb] = 0
                              $lbN3[nLb] = 0
                              $lbN4[nLb] = 0
                              nLb = nLb + 1
                              $lbK[nLb] = 10
                              $lbR[nLb] = 0
                              $lbX[nLb] = bMx
                              $lbY[nLb] = bMy
                              $lbP[nLb] = bMy
                              $lbA[nLb] = 4
                              $lbE[nLb] = 0
                              $lbCr[nLb] = inkC
                              $lbCg[nLb] = inkC
                              $lbCb[nLb] = inkC
                              $lbCa[nLb] = 140
                              $lbN1[nLb] = $kN[sIx]
                              $lbN2[nLb] = 0
                              $lbN3[nLb] = 0
                              $lbN4[nLb] = 0
                              nLb = nLb + 1
                              IF $kPipOk[sIx] = 1 THEN
                                 b1V = round($kH[sIx] / $kPipU[sIx] * 10) / 10
                                 b2V = round(blkH / $kPipU[sIx] * 10) / 10
                              ELSE
                                 b1V = round($kH[sIx] / ticksize) * ticksize
                                 b2V = round(blkH / ticksize) * ticksize
                              ENDIF
                              $lbK[nLb] = 11
                              $lbR[nLb] = 0
                              $lbX[nLb] = bMx
                              $lbY[nLb] = bMy - bDy
                              $lbP[nLb] = bMy - bDy
                              $lbA[nLb] = 4
                              $lbE[nLb] = 0
                              $lbCr[nLb] = inkC
                              $lbCg[nLb] = inkC
                              $lbCb[nLb] = inkC
                              $lbCa[nLb] = 140
                              $lbN1[nLb] = $kN[sIx] + 1
                              $lbN2[nLb] = b1V
                              $lbN3[nLb] = b2V
                              $lbN4[nLb] = $kPipOk[sIx]
                              nLb = nLb + 1
                           ELSE
                              $lbK[nLb] = 9
                              $lbR[nLb] = 0
                              $lbX[nLb] = bMx
                              $lbY[nLb] = bMy
                              $lbP[nLb] = bMy
                              $lbA[nLb] = 4
                              $lbE[nLb] = 0
                              $lbCr[nLb] = inkC
                              $lbCg[nLb] = inkC
                              $lbCb[nLb] = inkC
                              $lbCa[nLb] = 140
                              $lbN1[nLb] = kIx
                              $lbN2[nLb] = 0
                              $lbN3[nLb] = 0
                              $lbN4[nLb] = 0
                              nLb = nLb + 1
                           ENDIF
                           FOR uIx = 1 TO $kN[sIx] DO
                              IF $kDir[sIx] > 0 THEN
                                 uPx = bNear + $kH[sIx] * uIx
                              ELSE
                                 uPx = bNear - $kH[sIx] * uIx
                              ENDIF
                              $qsX1[nSeg] = bLx
                              $qsY1[nSeg] = uPx
                              $qsX2[nSeg] = bRx
                              $qsY2[nSeg] = uPx
                              $qsR[nSeg] = inkC
                              $qsG[nSeg] = inkC
                              $qsB[nSeg] = inkC
                              $qsA[nSeg] = 153
                              $qsS[nSeg] = 1
                              $qsW[nSeg] = 1
                              nSeg = nSeg + 1
                           NEXT
                        NEXT
                        IF $kJud[sIx] = 1 THEN
                           IF $kDir[sIx] < 0 THEN
                              stackPx = $kTop[sIx] + $kH[sIx] * $kN[sIx]
                              jR = 242
                              jG = 54
                              jB = 69
                              jAnc = 2
                           ELSE
                              stackPx = $kBot[sIx] - $kH[sIx] * $kN[sIx]
                              jR = 29
                              jG = 78
                              jB = 216
                              jAnc = 3
                           ENDIF
                           $qsX1[nSeg] = $kEI[sIx]
                           $qsY1[nSeg] = stackPx
                           $qsX2[nSeg] = $kExI[sIx]
                           $qsY2[nSeg] = stackPx
                           $qsR[nSeg] = jR
                           $qsG[nSeg] = jG
                           $qsB[nSeg] = jB
                           $qsA[nSeg] = 255
                           $qsS[nSeg] = 0
                           $qsW[nSeg] = 1
                           nSeg = nSeg + 1
                           IF labelDetail <> 2 THEN
                              IF $kPipOk[sIx] = 1 THEN
                                 jV = round($kH[sIx] / $kPipU[sIx] * 10) / 10
                              ELSE
                                 jV = round($kH[sIx] / ticksize) * ticksize
                              ENDIF
                              $lbK[nLb] = 12
                              $lbR[nLb] = 0
                              $lbX[nLb] = $kMidI[sIx]
                              $lbY[nLb] = stackPx
                              $lbP[nLb] = stackPx
                              $lbA[nLb] = jAnc
                              $lbE[nLb] = 0
                              $lbCr[nLb] = jR
                              $lbCg[nLb] = jG
                              $lbCb[nLb] = jB
                              $lbCa[nLb] = 255
                              $lbN1[nLb] = $kDir[sIx]
                              $lbN2[nLb] = $kN[sIx]
                              $lbN3[nLb] = jV
                              $lbN4[nLb] = $kPipOk[sIx]
                              nLb = nLb + 1
                           ENDIF
                        ENDIF
                     ENDIF
                  ENDIF
               ENDIF
            NEXT
            IF $fOn[rIx] = 1 AND $fN[rIx] > 0 THEN
               IF useWick = 1 THEN
                  runHi = $fWH[rIx]
                  runLo = $fWL[rIx]
                  runHiI = $fWHI[rIx]
                  runLoI = $fWLI[rIx]
               ELSE
                  runHi = $fBH[rIx]
                  runLo = $fBL[rIx]
                  runHiI = $fBHI[rIx]
                  runLoI = $fBLI[rIx]
               ENDIF
               IF $fET[rIx] >= $fWE[rIx] THEN
                  xR = $fEI[rIx] + 1
               ELSIF $fWEI[rIx] >= 0 THEN
                  xR = $fWEI[rIx]
               ELSIF nowT >= $fWE[rIx] THEN
                  xR = nowI
               ELSE
                  xR = nowI + round(($fWE[rIx] - nowT) / tfSec)
               ENDIF
               xS = $fSI[rIx]
               IF showWickRef = 1 THEN
                  $qrX1[nRec] = xS
                  $qrY1[nRec] = $fWH[rIx]
                  $qrX2[nRec] = xR
                  $qrY2[nRec] = $fWL[rIx]
                  $qrR[nRec] = cR
                  $qrG[nRec] = cG
                  $qrB[nRec] = cB
                  $qrA[nRec] = 13
                  $qrFR[nRec] = cR
                  $qrFG[nRec] = cG
                  $qrFB[nRec] = cB
                  $qrFA[nRec] = 13
                  $qrS[nRec] = 1
                  $qrW[nRec] = boxBorderW
                  nRec = nRec + 1
               ENDIF
               IF showZone = 1 THEN
                  $qrX1[nRec] = xS
                  $qrY1[nRec] = runHi
                  $qrX2[nRec] = xR
                  $qrY2[nRec] = runLo
                  $qrR[nRec] = cR
                  $qrG[nRec] = cG
                  $qrB[nRec] = cB
                  $qrA[nRec] = 0
                  $qrFR[nRec] = cR
                  $qrFG[nRec] = cG
                  $qrFB[nRec] = cB
                  $qrFA[nRec] = 46
                  $qrS[nRec] = 0
                  $qrW[nRec] = 1
                  nRec = nRec + 1
                  $lbK[nLb] = 7
                  $lbR[nLb] = rIx
                  $lbX[nLb] = round((xS + xR) / 2)
                  $lbY[nLb] = runHi
                  $lbP[nLb] = runHi
                  $lbA[nLb] = 2
                  $lbE[nLb] = 0
                  $lbCr[nLb] = cR
                  $lbCg[nLb] = cG
                  $lbCb[nLb] = cB
                  $lbCa[nLb] = 255
                  $lbN1[nLb] = 0
                  $lbN2[nLb] = 0
                  $lbN3[nLb] = 0
                  $lbN4[nLb] = 0
                  nLb = nLb + 1
               ENDIF
               $qsX1[nSeg] = runHiI
               $qsY1[nSeg] = runHi
               $qsX2[nSeg] = xR
               $qsY2[nSeg] = runHi
               $qsR[nSeg] = cR
               $qsG[nSeg] = cG
               $qsB[nSeg] = cB
               $qsA[nSeg] = 255
               $qsS[nSeg] = 0
               $qsW[nSeg] = lnW
               nSeg = nSeg + 1
               $qsX1[nSeg] = runLoI
               $qsY1[nSeg] = runLo
               $qsX2[nSeg] = xR
               $qsY2[nSeg] = runLo
               $qsR[nSeg] = cR
               $qsG[nSeg] = cG
               $qsB[nSeg] = cB
               $qsA[nSeg] = 255
               $qsS[nSeg] = 0
               $qsW[nSeg] = lnW
               nSeg = nSeg + 1
            ENDIF
         ENDIF
      NEXT
      IF showLcKz = 1 AND $zCnt[0] > 0 THEN
         zLast = $zCnt[0]
         FOR zIx = 0 TO 9 DO
            zid = $zId[zIx]
            IF zid > 0 THEN
               zTp = $zTop[zIx]
               zBt = $zBot[zIx]
               IF $zSI[zIx] >= 0 THEN
                  zx1 = $zSI[zIx]
               ELSIF nowT >= $zST[zIx] THEN
                  zx1 = nowI
               ELSE
                  zx1 = nowI + round(($zST[zIx] - nowT) / tfSec)
               ENDIF
               IF $zEI[zIx] >= 0 THEN
                  zx2 = $zEI[zIx]
               ELSIF nowT >= $zET[zIx] THEN
                  zx2 = nowI
               ELSE
                  zx2 = nowI + round(($zET[zIx] - nowT) / tfSec)
               ENDIF
               IF $zCI[zIx] >= 0 THEN
                  zx3 = $zCI[zIx]
               ELSIF nowT >= $zCT[zIx] THEN
                  zx3 = nowI
               ELSE
                  zx3 = nowI + round(($zCT[zIx] - nowT) / tfSec)
               ENDIF
               IF zid > zLast - nSets THEN
                  $qrX1[nRec] = zx1
                  $qrY1[nRec] = zTp
                  $qrX2[nRec] = zx2
                  $qrY2[nRec] = zBt
                  $qrR[nRec] = inkC
                  $qrG[nRec] = inkC
                  $qrB[nRec] = inkC
                  $qrA[nRec] = 20
                  $qrFR[nRec] = inkC
                  $qrFG[nRec] = inkC
                  $qrFB[nRec] = inkC
                  $qrFA[nRec] = 20
                  $qrS[nRec] = 0
                  $qrW[nRec] = 1
                  nRec = nRec + 1
                  IF $zCap[zIx] = 1 THEN
                     $qsX1[nSeg] = zx3
                     $qsY1[nSeg] = zTp
                     $qsX2[nSeg] = zx3
                     $qsY2[nSeg] = zBt
                     $qsR[nSeg] = inkC
                     $qsG[nSeg] = inkC
                     $qsB[nSeg] = inkC
                     $qsA[nSeg] = 255
                     $qsS[nSeg] = 1
                     $qsW[nSeg] = 1
                     nSeg = nSeg + 1
                     $lbK[nLb] = 14
                     $lbR[nLb] = 0
                     $lbX[nLb] = zx3
                     $lbY[nLb] = zTp
                     $lbP[nLb] = zTp
                     $lbA[nLb] = 4
                     $lbE[nLb] = 0
                     $lbCr[nLb] = inkC
                     $lbCg[nLb] = inkC
                     $lbCb[nLb] = inkC
                     $lbCa[nLb] = 255
                     $lbN1[nLb] = 0
                     $lbN2[nLb] = 0
                     $lbN3[nLb] = 0
                     $lbN4[nLb] = 0
                     nLb = nLb + 1
                  ENDIF
               ENDIF
               zKeep = nSets
               IF $zCap[zIx] = 0 THEN
                  zKeep = 2 * nSets
               ENDIF
               IF zid > zLast - zKeep THEN
                  $lbK[nLb] = 13
                  $lbR[nLb] = 0
                  $lbX[nLb] = round((zx1 + zx2) / 2)
                  $lbY[nLb] = zTp
                  $lbP[nLb] = zTp
                  $lbA[nLb] = 2
                  $lbE[nLb] = 0
                  $lbCr[nLb] = inkC
                  $lbCg[nLb] = inkC
                  $lbCb[nLb] = inkC
                  $lbCa[nLb] = 255
                  $lbN1[nLb] = 0
                  $lbN2[nLb] = 0
                  $lbN3[nLb] = 0
                  $lbN4[nLb] = 0
                  nLb = nLb + 1
               ENDIF
            ENDIF
         NEXT
      ENDIF
   ENDIF
   nEd = 0
   FOR iLb = 0 TO nLb - 1 DO
      IF $lbE[iLb] = 1 THEN
         $ord[nEd] = iLb
         nEd = nEd + 1
      ENDIF
   NEXT
   IF nEd > 1 THEN
      FOR iA = 1 TO nEd - 1 DO
         keyI = $ord[iA]
         keyP = $lbP[keyI]
         jB = iA - 1
         goOn = 1
         WHILE goOn = 1 DO
            IF jB < 0 THEN
               goOn = 0
            ELSE
               oj = $ord[jB]
               IF $lbP[oj] > keyP THEN
                  $ord[jB + 1] = oj
                  jB = jB - 1
               ELSE
                  goOn = 0
               ENDIF
            ENDIF
         WEND
         $ord[jB + 1] = keyI
      NEXT
   ENDIF
   hasLast = 0
   lastY = 0
   FOR iA = 0 TO nEd - 1 DO
      oj = $ord[iA]
      yv = $lbP[oj]
      IF hasLast = 1 AND lblGap > 0 AND yv - lastY < lblGap THEN
         yv = lastY + lblGap
      ENDIF
      $lbY[oj] = yv
      lastY = yv
      hasLast = 1
   NEXT
   FOR iQ = 0 TO nRec - 1 DO
      x1 = $qrX1[iQ]
      y1 = $qrY1[iQ]
      x2 = $qrX2[iQ]
      y2 = $qrY2[iQ]
      qcr = $qrR[iQ]
      qcg = $qrG[iQ]
      qcb = $qrB[iQ]
      qca = $qrA[iQ]
      qfr = $qrFR[iQ]
      qfg = $qrFG[iQ]
      qfb = $qrFB[iQ]
      qfa = $qrFA[iQ]
      qS = $qrS[iQ]
      qW = $qrW[iQ]
      IF qS = 0 THEN
         IF qW <= 1 THEN
            DRAWRECTANGLE(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) FILLCOLOR(qfr, qfg, qfb, qfa) STYLE(line, 1)
         ELSIF qW = 2 THEN
            DRAWRECTANGLE(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) FILLCOLOR(qfr, qfg, qfb, qfa) STYLE(line, 2)
         ELSIF qW = 3 THEN
            DRAWRECTANGLE(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) FILLCOLOR(qfr, qfg, qfb, qfa) STYLE(line, 3)
         ELSIF qW >= 4 THEN
            DRAWRECTANGLE(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) FILLCOLOR(qfr, qfg, qfb, qfa) STYLE(line, 4)
         ENDIF
      ELSIF qS = 1 THEN
         IF qW <= 1 THEN
            DRAWRECTANGLE(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) FILLCOLOR(qfr, qfg, qfb, qfa) STYLE(dottedline, 1)
         ELSIF qW = 2 THEN
            DRAWRECTANGLE(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) FILLCOLOR(qfr, qfg, qfb, qfa) STYLE(dottedline, 2)
         ELSIF qW = 3 THEN
            DRAWRECTANGLE(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) FILLCOLOR(qfr, qfg, qfb, qfa) STYLE(dottedline, 3)
         ELSIF qW >= 4 THEN
            DRAWRECTANGLE(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) FILLCOLOR(qfr, qfg, qfb, qfa) STYLE(dottedline, 4)
         ENDIF
      ENDIF
   NEXT
   FOR iQ = 0 TO nSeg - 1 DO
      x1 = $qsX1[iQ]
      y1 = $qsY1[iQ]
      x2 = $qsX2[iQ]
      y2 = $qsY2[iQ]
      qcr = $qsR[iQ]
      qcg = $qsG[iQ]
      qcb = $qsB[iQ]
      qca = $qsA[iQ]
      qS = $qsS[iQ]
      qW = $qsW[iQ]
      IF qS = 0 THEN
         IF qW <= 1 THEN
            DRAWSEGMENT(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) STYLE(line, 1)
         ELSIF qW = 2 THEN
            DRAWSEGMENT(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) STYLE(line, 2)
         ELSIF qW = 3 THEN
            DRAWSEGMENT(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) STYLE(line, 3)
         ELSIF qW >= 4 THEN
            DRAWSEGMENT(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) STYLE(line, 4)
         ENDIF
      ELSIF qS = 1 THEN
         IF qW <= 1 THEN
            DRAWSEGMENT(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) STYLE(dottedline, 1)
         ELSIF qW = 2 THEN
            DRAWSEGMENT(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) STYLE(dottedline, 2)
         ELSIF qW = 3 THEN
            DRAWSEGMENT(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) STYLE(dottedline, 3)
         ELSIF qW >= 4 THEN
            DRAWSEGMENT(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) STYLE(dottedline, 4)
         ENDIF
      ELSIF qS = 2 THEN
         IF qW <= 1 THEN
            DRAWSEGMENT(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) STYLE(dottedline2, 1)
         ELSIF qW = 2 THEN
            DRAWSEGMENT(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) STYLE(dottedline2, 2)
         ELSIF qW = 3 THEN
            DRAWSEGMENT(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) STYLE(dottedline2, 3)
         ELSIF qW >= 4 THEN
            DRAWSEGMENT(x1, y1, x2, y2) COLOURED(qcr, qcg, qcb, qca) STYLE(dottedline2, 4)
         ENDIF
      ENDIF
   NEXT
   FOR iLb = 0 TO nLb - 1 DO
      lk = $lbK[iLb]
      lr = $lbR[iLb]
      lx = $lbX[iLb]
      ly = $lbY[iLb]
      la = $lbA[iLb]
      lcr = $lbCr[iLb]
      lcg = $lbCg[iLb]
      lcb = $lbCb[iLb]
      lca = $lbCa[iLb]
      n1 = $lbN1[iLb]
      n2 = $lbN2[iLb]
      n3 = $lbN3[iLb]
      n4 = $lbN4[iLb]
      IF la = 0 THEN
         IF lk = 1 THEN
            IF lr = 0 THEN
               DRAWTEXT("CBDR H", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 1 THEN
               DRAWTEXT("Asia H", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 2 THEN
               DRAWTEXT("London H", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 3 THEN
               DRAWTEXT("Custom H", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
            ENDIF
         ELSIF lk = 2 THEN
            IF lr = 0 THEN
               DRAWTEXT("CBDR L", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 1 THEN
               DRAWTEXT("Asia L", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 2 THEN
               DRAWTEXT("London L", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 3 THEN
               DRAWTEXT("Custom L", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
            ENDIF
         ELSIF lk = 3 THEN
            IF lr = 0 THEN
               DRAWTEXT("CBDR EQ", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 1 THEN
               DRAWTEXT("Asia EQ", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 2 THEN
               DRAWTEXT("London EQ", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 3 THEN
               DRAWTEXT("Custom EQ", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
            ENDIF
         ELSIF lk = 4 THEN
            IF lr = 0 THEN
               IF n1 = 0 THEN
                  IF n4 = 0 THEN
                     DRAWTEXT("+CBDR #n2#", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 1 THEN
                     DRAWTEXT("+CBDR #n2#Ideal HOD", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("+CBDR #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("+CBDR #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ELSE
                  IF n4 = 0 THEN
                     DRAWTEXT("-CBDR #n2#", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 2 THEN
                     DRAWTEXT("-CBDR #n2#Ideal LOD", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("-CBDR #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("-CBDR #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ENDIF
            ELSIF lr = 1 THEN
               IF n1 = 0 THEN
                  IF n4 = 0 THEN
                     DRAWTEXT("+Asia #n2#", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 1 THEN
                     DRAWTEXT("+Asia #n2#Ideal HOD", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("+Asia #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("+Asia #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ELSE
                  IF n4 = 0 THEN
                     DRAWTEXT("-Asia #n2#", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 2 THEN
                     DRAWTEXT("-Asia #n2#Ideal LOD", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("-Asia #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("-Asia #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ENDIF
            ELSIF lr = 2 THEN
               IF n1 = 0 THEN
                  IF n4 = 0 THEN
                     DRAWTEXT("+London #n2#", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 1 THEN
                     DRAWTEXT("+London #n2#Ideal HOD", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("+London #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("+London #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ELSE
                  IF n4 = 0 THEN
                     DRAWTEXT("-London #n2#", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 2 THEN
                     DRAWTEXT("-London #n2#Ideal LOD", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("-London #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("-London #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ENDIF
            ELSIF lr = 3 THEN
               IF n1 = 0 THEN
                  IF n4 = 0 THEN
                     DRAWTEXT("+Custom #n2#", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 1 THEN
                     DRAWTEXT("+Custom #n2#Ideal HOD", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("+Custom #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("+Custom #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ELSE
                  IF n4 = 0 THEN
                     DRAWTEXT("-Custom #n2#", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 2 THEN
                     DRAWTEXT("-Custom #n2#Ideal LOD", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("-Custom #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("-Custom #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ENDIF
            ENDIF
         ELSIF lk = 5 THEN
            IF n2 = 0 THEN
               IF n4 > 0 THEN
                  DRAWTEXT("Block #n1#· #n4#x", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSE
                  DRAWTEXT("Block #n1#", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
               ENDIF
            ELSIF n2 = 1 THEN
               IF n4 > 0 THEN
                  DRAWTEXT("Block #n1#W · #n4#x", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSE
                  DRAWTEXT("Block #n1#W", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
               ENDIF
            ELSIF n2 = 2 THEN
               IF n4 > 0 THEN
                  DRAWTEXT("Block #n1#· #n3#· #n4#x", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSE
                  DRAWTEXT("Block #n1#· #n3#", lx, ly, monospaced, bold, 10) ANCHOR(left, index, value) COLOURED(lcr, lcg, lcb, lca)
               ENDIF
            ENDIF
         ENDIF
      ELSIF la = 1 THEN
         IF lk = 1 THEN
            IF lr = 0 THEN
               DRAWTEXT("CBDR H", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 1 THEN
               DRAWTEXT("Asia H", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 2 THEN
               DRAWTEXT("London H", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 3 THEN
               DRAWTEXT("Custom H", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
            ENDIF
         ELSIF lk = 2 THEN
            IF lr = 0 THEN
               DRAWTEXT("CBDR L", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 1 THEN
               DRAWTEXT("Asia L", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 2 THEN
               DRAWTEXT("London L", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 3 THEN
               DRAWTEXT("Custom L", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
            ENDIF
         ELSIF lk = 3 THEN
            IF lr = 0 THEN
               DRAWTEXT("CBDR EQ", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 1 THEN
               DRAWTEXT("Asia EQ", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 2 THEN
               DRAWTEXT("London EQ", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 3 THEN
               DRAWTEXT("Custom EQ", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
            ENDIF
         ELSIF lk = 4 THEN
            IF lr = 0 THEN
               IF n1 = 0 THEN
                  IF n4 = 0 THEN
                     DRAWTEXT("+CBDR #n2#", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 1 THEN
                     DRAWTEXT("+CBDR #n2#Ideal HOD", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("+CBDR #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("+CBDR #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ELSE
                  IF n4 = 0 THEN
                     DRAWTEXT("-CBDR #n2#", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 2 THEN
                     DRAWTEXT("-CBDR #n2#Ideal LOD", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("-CBDR #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("-CBDR #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ENDIF
            ELSIF lr = 1 THEN
               IF n1 = 0 THEN
                  IF n4 = 0 THEN
                     DRAWTEXT("+Asia #n2#", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 1 THEN
                     DRAWTEXT("+Asia #n2#Ideal HOD", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("+Asia #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("+Asia #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ELSE
                  IF n4 = 0 THEN
                     DRAWTEXT("-Asia #n2#", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 2 THEN
                     DRAWTEXT("-Asia #n2#Ideal LOD", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("-Asia #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("-Asia #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ENDIF
            ELSIF lr = 2 THEN
               IF n1 = 0 THEN
                  IF n4 = 0 THEN
                     DRAWTEXT("+London #n2#", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 1 THEN
                     DRAWTEXT("+London #n2#Ideal HOD", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("+London #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("+London #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ELSE
                  IF n4 = 0 THEN
                     DRAWTEXT("-London #n2#", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 2 THEN
                     DRAWTEXT("-London #n2#Ideal LOD", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("-London #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("-London #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ENDIF
            ELSIF lr = 3 THEN
               IF n1 = 0 THEN
                  IF n4 = 0 THEN
                     DRAWTEXT("+Custom #n2#", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 1 THEN
                     DRAWTEXT("+Custom #n2#Ideal HOD", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("+Custom #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("+Custom #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ELSE
                  IF n4 = 0 THEN
                     DRAWTEXT("-Custom #n2#", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 2 THEN
                     DRAWTEXT("-Custom #n2#Ideal LOD", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("-Custom #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("-Custom #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ENDIF
            ENDIF
         ELSIF lk = 5 THEN
            IF n2 = 0 THEN
               IF n4 > 0 THEN
                  DRAWTEXT("Block #n1#· #n4#x", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSE
                  DRAWTEXT("Block #n1#", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
               ENDIF
            ELSIF n2 = 1 THEN
               IF n4 > 0 THEN
                  DRAWTEXT("Block #n1#W · #n4#x", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSE
                  DRAWTEXT("Block #n1#W", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
               ENDIF
            ELSIF n2 = 2 THEN
               IF n4 > 0 THEN
                  DRAWTEXT("Block #n1#· #n3#· #n4#x", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSE
                  DRAWTEXT("Block #n1#· #n3#", lx, ly, monospaced, bold, 10) ANCHOR(right, index, value) COLOURED(lcr, lcg, lcb, lca)
               ENDIF
            ENDIF
         ENDIF
      ELSIF la = 2 THEN
         IF lk = 1 THEN
            IF lr = 0 THEN
               DRAWTEXT("CBDR H", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 1 THEN
               DRAWTEXT("Asia H", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 2 THEN
               DRAWTEXT("London H", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 3 THEN
               DRAWTEXT("Custom H", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ENDIF
         ELSIF lk = 2 THEN
            IF lr = 0 THEN
               DRAWTEXT("CBDR L", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 1 THEN
               DRAWTEXT("Asia L", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 2 THEN
               DRAWTEXT("London L", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 3 THEN
               DRAWTEXT("Custom L", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ENDIF
         ELSIF lk = 3 THEN
            IF lr = 0 THEN
               DRAWTEXT("CBDR EQ", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 1 THEN
               DRAWTEXT("Asia EQ", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 2 THEN
               DRAWTEXT("London EQ", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 3 THEN
               DRAWTEXT("Custom EQ", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ENDIF
         ELSIF lk = 4 THEN
            IF lr = 0 THEN
               IF n1 = 0 THEN
                  IF n4 = 0 THEN
                     DRAWTEXT("+CBDR #n2#", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 1 THEN
                     DRAWTEXT("+CBDR #n2#Ideal HOD", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("+CBDR #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("+CBDR #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ELSE
                  IF n4 = 0 THEN
                     DRAWTEXT("-CBDR #n2#", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 2 THEN
                     DRAWTEXT("-CBDR #n2#Ideal LOD", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("-CBDR #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("-CBDR #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ENDIF
            ELSIF lr = 1 THEN
               IF n1 = 0 THEN
                  IF n4 = 0 THEN
                     DRAWTEXT("+Asia #n2#", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 1 THEN
                     DRAWTEXT("+Asia #n2#Ideal HOD", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("+Asia #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("+Asia #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ELSE
                  IF n4 = 0 THEN
                     DRAWTEXT("-Asia #n2#", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 2 THEN
                     DRAWTEXT("-Asia #n2#Ideal LOD", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("-Asia #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("-Asia #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ENDIF
            ELSIF lr = 2 THEN
               IF n1 = 0 THEN
                  IF n4 = 0 THEN
                     DRAWTEXT("+London #n2#", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 1 THEN
                     DRAWTEXT("+London #n2#Ideal HOD", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("+London #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("+London #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ELSE
                  IF n4 = 0 THEN
                     DRAWTEXT("-London #n2#", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 2 THEN
                     DRAWTEXT("-London #n2#Ideal LOD", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("-London #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("-London #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ENDIF
            ELSIF lr = 3 THEN
               IF n1 = 0 THEN
                  IF n4 = 0 THEN
                     DRAWTEXT("+Custom #n2#", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 1 THEN
                     DRAWTEXT("+Custom #n2#Ideal HOD", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("+Custom #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("+Custom #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ELSE
                  IF n4 = 0 THEN
                     DRAWTEXT("-Custom #n2#", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 2 THEN
                     DRAWTEXT("-Custom #n2#Ideal LOD", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 3 THEN
                     DRAWTEXT("-Custom #n2#Typical Extreme", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ELSIF n4 = 4 THEN
                     DRAWTEXT("-Custom #n2#News / Reversal", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
                  ENDIF
               ENDIF
            ENDIF
         ELSIF lk = 5 THEN
            IF n2 = 0 THEN
               IF n4 > 0 THEN
                  DRAWTEXT("Block #n1#· #n4#x", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSE
                  DRAWTEXT("Block #n1#", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ENDIF
            ELSIF n2 = 1 THEN
               IF n4 > 0 THEN
                  DRAWTEXT("Block #n1#W · #n4#x", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSE
                  DRAWTEXT("Block #n1#W", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ENDIF
            ELSIF n2 = 2 THEN
               IF n4 > 0 THEN
                  DRAWTEXT("Block #n1#· #n3#· #n4#x", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSE
                  DRAWTEXT("Block #n1#· #n3#", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ENDIF
            ENDIF
         ELSIF lk = 6 THEN
            IF lr = 0 THEN
               IF n1 = 0 THEN
                  DRAWTEXT("CBDR", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSIF n1 = 1 THEN
                  DRAWTEXT("CBDR Partial", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSIF n1 = 2 THEN
                  DRAWTEXT("CBDR Oversized", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSIF n1 = 3 THEN
                  DRAWTEXT("CBDR · Not valid · over #n2#p", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSIF n1 = 4 THEN
                  DRAWTEXT("CBDR · Not valid · 0 SD", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ENDIF
            ELSIF lr = 1 THEN
               IF n1 = 0 THEN
                  DRAWTEXT("Asia", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSIF n1 = 1 THEN
                  DRAWTEXT("Asia Partial", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSIF n1 = 2 THEN
                  DRAWTEXT("Asia Oversized", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSIF n1 = 3 THEN
                  DRAWTEXT("Asia · Not valid · over #n2#p", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSIF n1 = 4 THEN
                  DRAWTEXT("Asia · Not valid · 0 SD", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ENDIF
            ELSIF lr = 2 THEN
               IF n1 = 0 THEN
                  DRAWTEXT("London", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSIF n1 = 1 THEN
                  DRAWTEXT("London Partial", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSIF n1 = 2 THEN
                  DRAWTEXT("London Oversized", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSIF n1 = 3 THEN
                  DRAWTEXT("London · Not valid · over #n2#p", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSIF n1 = 4 THEN
                  DRAWTEXT("London · Not valid · 0 SD", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ENDIF
            ELSIF lr = 3 THEN
               IF n1 = 0 THEN
                  DRAWTEXT("Custom", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSIF n1 = 1 THEN
                  DRAWTEXT("Custom Partial", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSIF n1 = 2 THEN
                  DRAWTEXT("Custom Oversized", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSIF n1 = 3 THEN
                  DRAWTEXT("Custom · Not valid · over #n2#p", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ELSIF n1 = 4 THEN
                  DRAWTEXT("Custom · Not valid · 0 SD", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
               ENDIF
            ENDIF
         ELSIF lk = 7 THEN
            IF lr = 0 THEN
               DRAWTEXT("CBDR", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 1 THEN
               DRAWTEXT("Asia", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 2 THEN
               DRAWTEXT("London", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF lr = 3 THEN
               DRAWTEXT("Custom", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ENDIF
         ELSIF lk = 12 THEN
            IF n1 < 0 AND n4 = 1 THEN
               DRAWTEXT("London high +#n2#SD · CBDR #n3#p", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF n1 < 0 THEN
               DRAWTEXT("London high +#n2#SD · CBDR #n3#", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF n4 = 1 THEN
               DRAWTEXT("CBDR #n3#p · London low -#n2#SD", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSE
               DRAWTEXT("CBDR #n3#· London low -#n2#SD", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
            ENDIF
         ELSIF lk = 13 THEN
            DRAWTEXT("London close", lx, ly, monospaced, bold, 10) ANCHOR(bottom, index, value) COLOURED(lcr, lcg, lcb, lca)
         ENDIF
      ELSIF la = 3 THEN
         IF lk = 12 THEN
            IF n1 < 0 AND n4 = 1 THEN
               DRAWTEXT("London high +#n2#SD · CBDR #n3#p", lx, ly, monospaced, bold, 10) ANCHOR(top, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF n1 < 0 THEN
               DRAWTEXT("London high +#n2#SD · CBDR #n3#", lx, ly, monospaced, bold, 10) ANCHOR(top, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSIF n4 = 1 THEN
               DRAWTEXT("CBDR #n3#p · London low -#n2#SD", lx, ly, monospaced, bold, 10) ANCHOR(top, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSE
               DRAWTEXT("CBDR #n3#· London low -#n2#SD", lx, ly, monospaced, bold, 10) ANCHOR(top, index, value) COLOURED(lcr, lcg, lcb, lca)
            ENDIF
         ENDIF
      ELSIF la = 4 THEN
         IF lk = 8 THEN
            IF n3 = 1 THEN
               DRAWTEXT("#n1#SD · #n2#p", lx, ly, monospaced, bold, 10) ANCHOR(middle, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSE
               DRAWTEXT("#n1#SD · #n2#", lx, ly, monospaced, bold, 10) ANCHOR(middle, index, value) COLOURED(lcr, lcg, lcb, lca)
            ENDIF
         ELSIF lk = 9 THEN
            DRAWTEXT("Block #n1#", lx, ly, monospaced, bold, 10) ANCHOR(middle, index, value) COLOURED(lcr, lcg, lcb, lca)
         ELSIF lk = 10 THEN
            DRAWTEXT("= CBDR + #n1#SD", lx, ly, monospaced, bold, 10) ANCHOR(middle, index, value) COLOURED(lcr, lcg, lcb, lca)
         ELSIF lk = 11 THEN
            IF n4 = 1 THEN
               DRAWTEXT("= #n1#x #n2#p = #n3#p", lx, ly, monospaced, bold, 10) ANCHOR(middle, index, value) COLOURED(lcr, lcg, lcb, lca)
            ELSE
               DRAWTEXT("= #n1#x #n2#= #n3#", lx, ly, monospaced, bold, 10) ANCHOR(middle, index, value) COLOURED(lcr, lcg, lcb, lca)
            ENDIF
         ELSIF lk = 14 THEN
            DRAWTEXT("14:00", lx, ly, monospaced, bold, 10) ANCHOR(middle, index, value) COLOURED(lcr, lcg, lcb, lca)
         ENDIF
      ENDIF
   NEXT
   IF showPanel = 1 THEN
      IF tableSize = 0 THEN
         pz = 8
      ELSIF tableSize = 2 THEN
         pz = 12
      ELSE
         pz = 10
      ENDIF
      rowH = pz + 8
      chW = pz * 0.62
      cbdrRow = 0
      IF showCbdr = 1 AND $cOk[0] = 1 THEN
         cbdrRow = 1
      ENDIF
      asiaRow = 0
      IF (showAsia = 1 OR showProfile = 1) AND $pAsiaSet[0] = 1 THEN
         asiaRow = 1
      ENDIF
      lonRow = 0
      IF showLondon = 1 AND $cOk[2] = 1 THEN
         lonRow = 1
      ENDIF
      custRow = 0
      IF showCustom = 1 AND $cOk[3] = 1 THEN
         custRow = 1
      ENDIF
      blkRow = 0
      IF showCbdr = 1 AND showBlocks = 1 AND tfOk = 1 THEN
         blkRow = 1
      ENDIF
      profRow = 0
      IF showProfile = 1 AND tfOk = 1 AND $pAsiaSet[0] = 1 THEN
         profRow = 1
      ENDIF
      asiaOk = 0
      asiaHas = 0
      asiaPv = 0
      IF $pAsiaSet[0] = 1 AND pipOkN = 1 THEN
         asiaHas = 1
         asiaPv = ($pAsiaHi[0] - $pAsiaLo[0]) / pipUN
         IF asiaPv >= asiaMinP AND asiaPv <= asiaMaxP THEN
            asiaOk = 1
         ENDIF
      ENDIF
      asiaV = round(asiaPv * 10) / 10
      aMinV = round(asiaMinP)
      aMaxV = round(asiaMaxP)
      moveHas = 0
      moveP = 0
      IF $pMidSet[0] = 1 AND pipOkN = 1 THEN
         moveHas = 1
         moveP = ($pMidClose[0] - $pMidOpen[0]) / pipUN
      ENDIF
      moveV = round(moveP * 10) / 10
      moveDir = 0
      IF moveHas = 1 THEN
         IF moveP >= flatPips THEN
            moveDir = 1
         ELSIF moveP <= 0 - flatPips THEN
            moveDir = -1
         ENDIF
      ENDIF
      brkH = floor($pBrkM[0] / 60)
      brkMm = $pBrkM[0] MOD 60
      shp = 0
      IF $pMidSet[0] = 0 THEN
         shp = 1
      ELSIF moveDir = 1 AND asiaOk = 1 THEN
         shp = 2
      ELSIF moveDir = -1 AND asiaOk = 1 THEN
         shp = 3
      ELSIF moveDir = 1 THEN
         shp = 4
      ELSIF moveDir = -1 THEN
         shp = 5
      ELSIF $pMidDone[0] = 1 THEN
         shp = 6
      ELSE
         shp = 7
      ENDIF
      retRow = 0
      IF profRow = 1 AND $pMidDone[0] = 1 AND NOT (asiaOk = 1 AND moveDir <> 0) THEN
         retRow = 1
      ENDIF
      rallyV = 0
      dipV = 0
      IF $pRetSet[0] = 1 AND pipOkN = 1 THEN
         rallyV = round(($pRetHi[0] - $pRetOpen[0]) / pipUN * 10) / 10
         dipV = round(($pRetOpen[0] - $pRetLo[0]) / pipUN * 10) / 10
      ENDIF
      maxLen = 6
      IF cbdrRow = 1 OR lonRow = 1 OR custRow = 1 THEN
         maxLen = max(maxLen, 14)
      ENDIF
      IF asiaRow = 1 THEN
         maxLen = max(maxLen, 17)
      ENDIF
      IF blkRow = 1 THEN
         maxLen = max(maxLen, 18)
      ENDIF
      IF profRow = 1 THEN
         maxLen = max(maxLen, 40)
      ENDIF
      IF tfOk = 0 THEN
         maxLen = max(maxLen, 23)
      ENDIF
      nRows = 3 + cbdrRow + asiaRow + lonRow + custRow + 3 * blkRow + 2 * profRow + retRow + (1 - tfOk)
      nameW = 11 * chW + 12
      valW = maxLen * chW + 14
      pRight = -85
      pTop = -12
      cxN = pRight - valW - nameW / 2
      cxV = pRight - valW / 2
      DRAWRECTANGLE(pRight - valW - nameW, pTop, pRight, pTop - nRows * rowH) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      pRow = 0
      pyR = pTop - rowH * (pRow + 0.5)
      DRAWTEXT("CBDR DEV+", cxN, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      pRow = pRow + 1
      pyR = pTop - rowH * (pRow + 0.5)
      DRAWTEXT("TIMEFRAME", cxN, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      IF tfSec = 3600 THEN
         DRAWTEXT("1H", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ELSIF tfSec < 86400 AND tfMin >= 60 AND (tfMin MOD 60) = 0 THEN
         tfH = tfMin / 60
         DRAWTEXT("#tfH#H", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ELSIF tfSec = 60 THEN
         DRAWTEXT("1m", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ELSIF tfSec = 120 THEN
         DRAWTEXT("2m", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ELSIF tfSec = 180 THEN
         DRAWTEXT("3m", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ELSIF tfSec = 300 THEN
         DRAWTEXT("5m", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ELSIF tfSec = 600 THEN
         DRAWTEXT("10m", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ELSIF tfSec = 900 THEN
         DRAWTEXT("15m", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ELSIF tfSec = 1200 THEN
         DRAWTEXT("20m", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ELSIF tfSec = 1800 THEN
         DRAWTEXT("30m", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ELSIF tfSec = 2700 THEN
         DRAWTEXT("45m", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ELSIF tfSec < 86400 THEN
         tfM = round(tfMin)
         DRAWTEXT("#tfM#m", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ELSIF tfSec < 604800 THEN
         tfD = round(tfSec / 86400)
         DRAWTEXT("#tfD#D", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ELSIF tfSec < 2419200 THEN
         tfWk = round(tfSec / 604800)
         DRAWTEXT("#tfWk#W", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ELSE
         DRAWTEXT("1M", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ENDIF
      pRow = pRow + 1
      IF cbdrRow = 1 THEN
         pyR = pTop - rowH * (pRow + 0.5)
         DRAWTEXT("CBDR", cxN, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         IF pipOkN = 1 THEN
            gV = round($cRng[0] / pipUN * 10) / 10
         ELSE
            gV = round($cRng[0] / ticksize) * ticksize
         ENDIF
         gCode = 0
         IF $cPart[0] = 1 THEN
            gCode = 1
         ELSIF $cGrade[0] = 3 THEN
            gCode = 2
         ELSIF $cGrade[0] = 2 THEN
            gCode = 3
         ELSIF $cGrade[0] = 1 THEN
            gCode = 4
         ELSIF $cGrade[0] = 4 THEN
            gCode = 5
         ENDIF
         IF gCode = 1 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p Part", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV# Part", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ELSIF gCode = 2 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p OK", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV# OK", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ELSIF gCode = 3 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p Over", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV# Over", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ELSIF gCode = 4 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p Ideal", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV# Ideal", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ELSIF gCode = 5 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p Ungated", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV# Ungated", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ELSIF gCode = 0 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ENDIF
         pRow = pRow + 1
      ENDIF
      IF asiaRow = 1 THEN
         pyR = pTop - rowH * (pRow + 0.5)
         DRAWTEXT("ASIA", cxN, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         IF asiaHas = 0 THEN
            DRAWTEXT("-", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF asiaOk = 1 AND aMinV = 20 AND aMaxV = 30 THEN
            DRAWTEXT("#asiaV#p in 20-30", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF asiaOk = 1 THEN
            DRAWTEXT("#asiaV#p in #aMinV#- #aMaxV#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF asiaPv < asiaMinP AND aMinV = 20 AND aMaxV = 30 THEN
            DRAWTEXT("#asiaV#p under 20-30", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF asiaPv < asiaMinP THEN
            DRAWTEXT("#asiaV#p under #aMinV#- #aMaxV#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF aMinV = 20 AND aMaxV = 30 THEN
            DRAWTEXT("#asiaV#p over 20-30", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSE
            DRAWTEXT("#asiaV#p over #aMinV#- #aMaxV#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ENDIF
         pRow = pRow + 1
      ENDIF
      IF lonRow = 1 THEN
         pyR = pTop - rowH * (pRow + 0.5)
         DRAWTEXT("LON WINDOW", cxN, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         IF pipOkN = 1 THEN
            gV = round($cRng[2] / pipUN * 10) / 10
         ELSE
            gV = round($cRng[2] / ticksize) * ticksize
         ENDIF
         gCode = 0
         IF $cPart[2] = 1 THEN
            gCode = 1
         ELSIF $cGrade[2] = 3 THEN
            gCode = 2
         ELSIF $cGrade[2] = 2 THEN
            gCode = 3
         ELSIF $cGrade[2] = 1 THEN
            gCode = 4
         ELSIF $cGrade[2] = 4 THEN
            gCode = 5
         ENDIF
         IF gCode = 1 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p Part", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV# Part", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ELSIF gCode = 2 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p OK", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV# OK", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ELSIF gCode = 3 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p Over", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV# Over", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ELSIF gCode = 4 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p Ideal", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV# Ideal", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ELSIF gCode = 5 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p Ungated", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV# Ungated", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ELSIF gCode = 0 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ENDIF
         pRow = pRow + 1
      ENDIF
      IF custRow = 1 THEN
         pyR = pTop - rowH * (pRow + 0.5)
         DRAWTEXT("CUSTOM", cxN, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         IF pipOkN = 1 THEN
            gV = round($cRng[3] / pipUN * 10) / 10
         ELSE
            gV = round($cRng[3] / ticksize) * ticksize
         ENDIF
         gCode = 0
         IF $cPart[3] = 1 THEN
            gCode = 1
         ELSIF $cGrade[3] = 3 THEN
            gCode = 2
         ELSIF $cGrade[3] = 2 THEN
            gCode = 3
         ELSIF $cGrade[3] = 1 THEN
            gCode = 4
         ELSIF $cGrade[3] = 4 THEN
            gCode = 5
         ENDIF
         IF gCode = 1 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p Part", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV# Part", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ELSIF gCode = 2 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p OK", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV# OK", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ELSIF gCode = 3 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p Over", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV# Over", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ELSIF gCode = 4 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p Ideal", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV# Ideal", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ELSIF gCode = 5 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p Ungated", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV# Ungated", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ELSIF gCode = 0 THEN
            IF pipOkN = 1 THEN
               DRAWTEXT("#gV#p", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSE
               DRAWTEXT("#gV#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ENDIF
         pRow = pRow + 1
      ENDIF
      pyR = pTop - rowH * (pRow + 0.5)
      DRAWTEXT("ADR", cxN, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      IF adrOkN = 0 THEN
         DRAWTEXT("-", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ELSIF pipOkN = 1 THEN
         adrV = round(adrN / pipUN * 10) / 10
         DRAWTEXT("#adrV#p", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ELSE
         adrV = round(adrN / ticksize) * ticksize
         DRAWTEXT("#adrV#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
      ENDIF
      pRow = pRow + 1
      IF blkRow = 1 THEN
         pyR = pTop - rowH * (pRow + 0.5)
         DRAWTEXT("DAY", cxN, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         IF $bDayC[0] = 1 THEN
            DRAWTEXT("No CBDR", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF $bDayC[0] = 2 THEN
            DRAWTEXT("No Judas", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF $bDayC[0] = 3 THEN
            DRAWTEXT("Sell", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF $bDayC[0] = 4 THEN
            DRAWTEXT("Buy", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF $bDayC[0] = 5 THEN
            IF judasHour = 0 THEN
               DRAWTEXT("at 00:00", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSIF judasHour = 1 THEN
               DRAWTEXT("at 01:00", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSIF judasHour = 2 THEN
               DRAWTEXT("at 02:00", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSIF judasHour = 3 THEN
               DRAWTEXT("at 03:00", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSIF judasHour = 4 THEN
               DRAWTEXT("at 04:00", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSIF judasHour = 5 THEN
               DRAWTEXT("at 05:00", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSIF judasHour = 6 THEN
               DRAWTEXT("at 06:00", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSIF judasHour = 7 THEN
               DRAWTEXT("at 07:00", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSIF judasHour = 8 THEN
               DRAWTEXT("at 08:00", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ELSIF judasHour = 9 THEN
               DRAWTEXT("at 09:00", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
            ENDIF
         ELSE
            DRAWTEXT("-", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ENDIF
         pRow = pRow + 1
         pyR = pTop - rowH * (pRow + 0.5)
         DRAWTEXT("LONDON", cxN, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         IF $bDayC[0] = 2 THEN
            DRAWTEXT("inside 1 SD", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF $bDayC[0] = 3 THEN
            lonN = $bN[0]
            DRAWTEXT("+#lonN#SD", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF $bDayC[0] = 4 THEN
            lonN = $bN[0]
            DRAWTEXT("-#lonN#SD", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF $bDayC[0] = 5 THEN
            lonU = $bLonU[0]
            lonD = $bLonD[0]
            DRAWTEXT("+#lonU#/ -#lonD#SD", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSE
            DRAWTEXT("-", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ENDIF
         pRow = pRow + 1
         pyR = pTop - rowH * (pRow + 0.5)
         DRAWTEXT("BLOCK", cxN, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         IF $bBlkC[0] = 1 THEN
            blkV = $bV[0]
            pmV = round(pipMax)
            DRAWTEXT("none, #blkV#p > #pmV#p", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF $bBlkC[0] = 2 THEN
            DRAWTEXT("none", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF $bBlkC[0] = 3 AND $bVOk[0] = 1 THEN
            blkV = $bV[0]
            blkM = $bN[0] + 1
            DRAWTEXT("#blkM#x = #blkV#p", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF $bBlkC[0] = 3 THEN
            blkV = $bV[0]
            blkM = $bN[0] + 1
            DRAWTEXT("#blkM#x = #blkV#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSE
            DRAWTEXT("-", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ENDIF
         pRow = pRow + 1
      ENDIF
      IF profRow = 1 THEN
         pyR = pTop - rowH * (pRow + 0.5)
         DRAWTEXT("00-02", cxN, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         IF moveHas = 0 THEN
            DRAWTEXT("from 00:00", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF moveDir = 1 THEN
            IF moveV >= 0 THEN
               IF $pBrkDir[0] = 1 AND brkH = 0 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP +#moveV#p · above range 00:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP +#moveV#p · above range 00:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 0 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP +#moveV#p · above range 00:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP +#moveV#p · above range 00:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 1 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP +#moveV#p · above range 01:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP +#moveV#p · above range 01:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 1 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP +#moveV#p · above range 01:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP +#moveV#p · above range 01:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 2 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP +#moveV#p · above range 02:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP +#moveV#p · above range 02:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 2 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP +#moveV#p · above range 02:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP +#moveV#p · above range 02:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 0 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP +#moveV#p · below range 00:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP +#moveV#p · below range 00:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 0 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP +#moveV#p · below range 00:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP +#moveV#p · below range 00:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 1 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP +#moveV#p · below range 01:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP +#moveV#p · below range 01:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 1 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP +#moveV#p · below range 01:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP +#moveV#p · below range 01:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 2 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP +#moveV#p · below range 02:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP +#moveV#p · below range 02:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 2 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP +#moveV#p · below range 02:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP +#moveV#p · below range 02:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSE
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP +#moveV#p", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP +#moveV#p (running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ENDIF
            ELSE
               IF $pBrkDir[0] = 1 AND brkH = 0 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP #moveV#p · above range 00:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP #moveV#p · above range 00:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 0 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP #moveV#p · above range 00:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP #moveV#p · above range 00:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 1 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP #moveV#p · above range 01:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP #moveV#p · above range 01:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 1 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP #moveV#p · above range 01:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP #moveV#p · above range 01:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 2 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP #moveV#p · above range 02:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP #moveV#p · above range 02:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 2 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP #moveV#p · above range 02:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP #moveV#p · above range 02:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 0 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP #moveV#p · below range 00:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP #moveV#p · below range 00:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 0 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP #moveV#p · below range 00:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP #moveV#p · below range 00:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 1 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP #moveV#p · below range 01:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP #moveV#p · below range 01:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 1 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP #moveV#p · below range 01:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP #moveV#p · below range 01:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 2 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP #moveV#p · below range 02:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP #moveV#p · below range 02:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 2 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP #moveV#p · below range 02:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP #moveV#p · below range 02:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSE
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("UP #moveV#p", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("UP #moveV#p (running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ENDIF
            ENDIF
         ELSIF moveDir = -1 THEN
            IF moveV >= 0 THEN
               IF $pBrkDir[0] = 1 AND brkH = 0 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN +#moveV#p · above range 00:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN +#moveV#p · above range 00:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 0 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN +#moveV#p · above range 00:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN +#moveV#p · above range 00:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 1 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN +#moveV#p · above range 01:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN +#moveV#p · above range 01:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 1 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN +#moveV#p · above range 01:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN +#moveV#p · above range 01:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 2 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN +#moveV#p · above range 02:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN +#moveV#p · above range 02:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 2 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN +#moveV#p · above range 02:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN +#moveV#p · above range 02:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 0 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN +#moveV#p · below range 00:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN +#moveV#p · below range 00:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 0 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN +#moveV#p · below range 00:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN +#moveV#p · below range 00:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 1 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN +#moveV#p · below range 01:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN +#moveV#p · below range 01:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 1 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN +#moveV#p · below range 01:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN +#moveV#p · below range 01:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 2 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN +#moveV#p · below range 02:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN +#moveV#p · below range 02:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 2 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN +#moveV#p · below range 02:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN +#moveV#p · below range 02:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSE
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN +#moveV#p", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN +#moveV#p (running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ENDIF
            ELSE
               IF $pBrkDir[0] = 1 AND brkH = 0 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN #moveV#p · above range 00:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN #moveV#p · above range 00:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 0 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN #moveV#p · above range 00:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN #moveV#p · above range 00:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 1 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN #moveV#p · above range 01:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN #moveV#p · above range 01:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 1 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN #moveV#p · above range 01:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN #moveV#p · above range 01:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 2 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN #moveV#p · above range 02:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN #moveV#p · above range 02:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 2 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN #moveV#p · above range 02:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN #moveV#p · above range 02:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 0 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN #moveV#p · below range 00:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN #moveV#p · below range 00:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 0 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN #moveV#p · below range 00:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN #moveV#p · below range 00:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 1 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN #moveV#p · below range 01:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN #moveV#p · below range 01:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 1 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN #moveV#p · below range 01:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN #moveV#p · below range 01:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 2 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN #moveV#p · below range 02:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN #moveV#p · below range 02:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 2 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN #moveV#p · below range 02:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN #moveV#p · below range 02:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSE
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("DOWN #moveV#p", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("DOWN #moveV#p (running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ENDIF
            ENDIF
         ELSIF moveDir = 0 THEN
            IF moveV >= 0 THEN
               IF $pBrkDir[0] = 1 AND brkH = 0 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT +#moveV#p · above range 00:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT +#moveV#p · above range 00:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 0 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT +#moveV#p · above range 00:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT +#moveV#p · above range 00:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 1 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT +#moveV#p · above range 01:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT +#moveV#p · above range 01:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 1 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT +#moveV#p · above range 01:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT +#moveV#p · above range 01:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 2 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT +#moveV#p · above range 02:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT +#moveV#p · above range 02:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 2 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT +#moveV#p · above range 02:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT +#moveV#p · above range 02:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 0 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT +#moveV#p · below range 00:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT +#moveV#p · below range 00:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 0 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT +#moveV#p · below range 00:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT +#moveV#p · below range 00:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 1 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT +#moveV#p · below range 01:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT +#moveV#p · below range 01:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 1 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT +#moveV#p · below range 01:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT +#moveV#p · below range 01:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 2 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT +#moveV#p · below range 02:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT +#moveV#p · below range 02:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 2 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT +#moveV#p · below range 02:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT +#moveV#p · below range 02:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSE
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT +#moveV#p", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT +#moveV#p (running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ENDIF
            ELSE
               IF $pBrkDir[0] = 1 AND brkH = 0 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT #moveV#p · above range 00:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT #moveV#p · above range 00:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 0 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT #moveV#p · above range 00:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT #moveV#p · above range 00:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 1 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT #moveV#p · above range 01:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT #moveV#p · above range 01:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 1 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT #moveV#p · above range 01:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT #moveV#p · above range 01:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 2 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT #moveV#p · above range 02:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT #moveV#p · above range 02:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = 1 AND brkH = 2 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT #moveV#p · above range 02:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT #moveV#p · above range 02:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 0 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT #moveV#p · below range 00:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT #moveV#p · below range 00:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 0 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT #moveV#p · below range 00:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT #moveV#p · below range 00:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 1 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT #moveV#p · below range 01:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT #moveV#p · below range 01:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 1 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT #moveV#p · below range 01:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT #moveV#p · below range 01:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 2 AND brkMm < 10 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT #moveV#p · below range 02:0#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT #moveV#p · below range 02:0#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSIF $pBrkDir[0] = -1 AND brkH = 2 THEN
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT #moveV#p · below range 02:#brkMm#", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT #moveV#p · below range 02:#brkMm#(running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ELSE
                  IF $pMidDone[0] = 1 THEN
                     DRAWTEXT("FLAT #moveV#p", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ELSE
                     DRAWTEXT("FLAT #moveV#p (running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
                  ENDIF
               ENDIF
            ENDIF
         ENDIF
         pRow = pRow + 1
         pyR = pTop - rowH * (pRow + 0.5)
         DRAWTEXT("PROFILE", cxN, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         IF shp = 1 THEN
            DRAWTEXT("Asia forming", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF shp = 2 AND $pMidDone[0] = 1 THEN
            DRAWTEXT("Sell normal shape", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF shp = 2 THEN
            DRAWTEXT("Sell normal forming", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF shp = 3 AND $pMidDone[0] = 1 THEN
            DRAWTEXT("Buy normal shape", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF shp = 3 THEN
            DRAWTEXT("Buy normal forming", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF shp = 4 AND $pMidDone[0] = 1 THEN
            DRAWTEXT("Up, filter not met: delayed watch 02-03", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF shp = 4 THEN
            DRAWTEXT("Up, normal filter not met", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF shp = 5 AND $pMidDone[0] = 1 THEN
            DRAWTEXT("Down, filter not met: delayed watch 02-03", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF shp = 5 THEN
            DRAWTEXT("Down, normal filter not met", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF shp = 6 THEN
            DRAWTEXT("Delayed: watch 02-03 retrace", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSE
            DRAWTEXT("No direction yet", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ENDIF
         pRow = pRow + 1
      ENDIF
      IF retRow = 1 THEN
         pyR = pTop - rowH * (pRow + 0.5)
         DRAWTEXT("02-03", cxN, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         IF $pRetSet[0] = 0 OR pipOkN = 0 THEN
            DRAWTEXT("from 02:00", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSIF $pRetDone[0] = 1 THEN
            DRAWTEXT("rally +#rallyV#p · dip -#dipV#p", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ELSE
            DRAWTEXT("rally +#rallyV#p · dip -#dipV#p (running)", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         ENDIF
         pRow = pRow + 1
      ENDIF
      IF tfOk = 0 THEN
         pyR = pTop - rowH * (pRow + 0.5)
         DRAWTEXT("CHART", cxN, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         DRAWTEXT("Use 60 minutes or finer", cxV, pyR, monospaced, bold, pz) ANCHOR(TOPRIGHT, XSHIFT, YSHIFT) COLOURED(inkC, inkC, inkC, 255)
         pRow = pRow + 1
      ENDIF
   ENDIF
ENDIF

// ===================== ALERT SERIES (optional, invisible) =====================
up2 = undefined
dn2 = undefined
up3 = undefined
dn3 = undefined
IF alertSeries = 1 AND $cOk[0] = 1 AND $cOver[0] = 0 THEN
   up2 = $cHi[0] + $cRng[0] * 2
   dn2 = $cLo[0] - $cRng[0] * 2
   up3 = $cHi[0] + $cRng[0] * 3
   dn3 = $cLo[0] - $cRng[0] * 3
ENDIF

RETURN up2 COLOURED(0, 0, 0, 0) AS "CBDR +2 SD", dn2 COLOURED(0, 0, 0, 0) AS "CBDR -2 SD", up3 COLOURED(0, 0, 0, 0) AS "CBDR +3 SD", dn3 COLOURED(0, 0, 0, 0) AS "CBDR -3 SD"

Download
Filename: PRC_CBDR-Deviations-M1D.itf
Downloads: 2
Iván González
Iván González Legend
This author is like an anonymous function, present but not directly identifiable. More details on this code architect as soon as they exit 'incognito' mode.
Author’s Profile

Comments

bertrandpinoy
15 hours ago
#

How do you manage to be so prolific? Gods talk to you, does he?

Iván González
1 hour ago
#

hahahaha

ProRealCode ProRealCode
Loading...